在vb.net中使用嵌套数组构建json对象

时间:2014-01-31 09:58:24

标签: json vb.net

我有一个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 };

The request payload

1 个答案:

答案 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是您可以在两个必填属性messagebadge之后追加的另一个属性。