我正在使用Go中的json结构输入流。我从标准输入上的另一个应用程序接收输入流,并且无法更改通信协议。
我的问题是每个json结构都以非json字符串行终止:“ end”(不带引号)。
我正在使用Golang编码器/
json包来解码从stdin接收到的json。问题在于,第二次我使用msg调用解码器时,解码器会产生错误:“无效字符’e’正在寻找值的开头”。
问题当然是,“ end”字符串未经过json编码。我想知道如何让Go的json解码器跳过此字符串?
一些样本输入:
{"command": "ack", "id": "1231231"}
end
{"command": "fail", "id": "1231231"}
end
{
"command": "log",
// the message to log
"msg": "hello world!"
}
end
我尝试过的事情:
任何帮助,将不胜感激。
因此,我能够提出的最佳解决方案是:
我必须编写的代码:
// Create a buffer to hold the stream data
data := make([]byte, 5000)
// Read data from stdin in a loop
for {
_, err = os.Stdin.Read(data)
if err != nil {
panic(err)
}
index := bytes.Index(data, []byte("\n"))
data = data[:index]
var myStruct MyStruct
err = json.Unmarshal(data, &myStruct)
if err != nil {
panic(err)
}
//(Do something with myStruct)
}
问题内容: 我花了很多时间为我的问题找到解决方案。 在此示例中,我在SetNavRecords数组中有2条记录。第一个是 “ Artikelnummer”:“ 21700” ,第二个是 “ Artikelnummer”:“ 21701” 每个记录都有一个数组“ OfflineVerkaufspreis”。 对我来说重要的是“ OfflineVerkaufspreis”中的“ Location_Co
所以我有一个JSON url,里面有一些数据,比如名字、纬度和经度。然而,并不是每个对象都有经纬度,我只想显示具有经纬度的对象的名称。 带有lat和LNG的JSON示例对象:
我有一个如下的控制器, 我有另一个这样的控制器, 我的结果结构如下: 这扩展了结果类: 现在,我将要设置到结果字段中的模型是, 现在,对于上面提到的TestController,我想显示json响应中的所有字段,而在SecondTestController中,我想屏蔽(不显示)json响应中的age属性。在Spring我该如何实现这一点。非常感谢任何帮助!
问题内容: 嗨,我正在Go中使用rest API,我希望用户传递JSON参数: 但是它们并非总是必需的,例如,用户只能通过而忽略其他用户。他甚至可以发送0个参数。我怎样才能做到这一点? 问题答案: 从JSON文本解组值时,程序包不需要所有字段都以JSON形式出现,也不需要所有JSON字段都具有匹配的Go字段。 因此,您没有什么特别的事情要做,只需解组您必须拥有的东西,以获取您想要或可能想要的价值。
问题内容: 如何使用Javascript或jQuery过滤JSON数据? 这是我的JSON数据: JavaScript: 现在我只想要包含网站的名称和网站数据等于 “ yahoo” 问题答案: 这是您应该怎么做的方法:(适用于Google查找) 更好的 解决方案:(Salman’s) http://jsbin.com/yakubixi/4/edit
这个问题类似于常规WebClient请求中的Spring反应式流数据,不同之处在于我没有立即从我的WebClient获得JSON数组,而是类似于这样: 这个JSON对象可能非常大(约100MB),因此需要处理并流到客户端,而不是解析。这是我似乎能够正确获得语义学的唯一方法: 但是这意味着我要在内存中反序列化100MB或更多,然后从中创建一个通量。我想知道的是:我是否错过了一些关键的东西?我能以某种