我有一个json结构,我需要使用.net动态构建它,提供的示例是:
'{"payload":{"message" : <message>, "badge" : <badge>}[, "filter" : {"deviceID" : <deviceID criteria>,"<param1>" : <criteria>, ...}][, "schedule": {"scheduledTime": > <scheduled_time>, "useTimeZone": <use_time_zone>}]}'
到目前为止,我只能使用以下方式获得json的第一部分:
Dim sb As New StringBuilder()
Dim sw As New StringWriter(sb)
Using writer As JsonWriter = New JsonTextWriter(sw)
writer.Formatting = Formatting.Indented
writer.WriteStartObject()
writer.WritePropertyName("payload")
writer.WriteStartObject()
writer.WritePropertyName("message")
writer.WriteValue("Hello World!")
writer.WritePropertyName("badge")
writer.WriteValue(7)
writer.WriteEnd()
End Using
这给了我:
{
"payload": {
"message": "Hello World!",
"badge": 7
}
然后,如果我尝试使用writer.WriteStartArray()引入数组,我会收到错误,我该怎么做呢?
我现在已经到了正确的方式,至少在jquery中构建json!语法是;
var T = 'This is a Test!';
var D = '1';
return {"message": T , "badge": D };
答案 0 :(得分:0)
正如您所看到的,当前代码中的JSon输出缺少单个右大括号。我不确定,但是当你添加writer.WriteStartArray()
时,这可能是错误的原因。尝试通过调用WriteEndObject
:
writer.WriteValue("Hello World!")
writer.WritePropertyName("badge")
writer.WriteValue(7)
writer.WriteEndObject()
writer.WriteEndObject()
End Using
更新:
我认为规范中的方括号并不意味着数组。我不知何故相信这意味着方括号内的部分是可选属性。
[, "filter" : {"deviceID..."}]
注意方括号内容开头的逗号,表示filter
是您可以在两个必填属性message
和badge
之后追加的另一个属性。