2014-01-31 32 views
0

我有一個JSON結構,我需要動態地建立它使用.NET提供的示例大廈JSON對象是:在vb.net嵌套數組

'{"payload":{"message" : <message>, "badge" : <badge>}[, "filter" : {"deviceID" :   <deviceID criteria>,"<param1>" : <criteria>, ...}][, "schedule": {"scheduledTime": > <scheduled_time>, "useTimeZone": <use_time_zone>}]}' 

到目前爲止,我已經能夠只得到

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 
} 

然後,如果我嘗試介紹了JSON的第一部分使用完畢duce數組使用writer.WriteStartArray()我得到錯誤,我該如何正確地做到這一點?

我現在已經到了正確的方式,至少在jQuery中構建json的底部!語法是;

var T = 'This is a Test!'; 
var D = '1'; 
return {"message": T , "badge": D }; 

The request payload

回答

0

正如你所看到的,從目前的代碼JSON輸出缺單右大括號。我不確定,但是當您添加writer.WriteStartArray()時,可能會導致錯誤。嘗試通過調用WriteEndObject修復缺少右花括號:

writer.WriteValue("Hello World!") 
writer.WritePropertyName("badge") 
writer.WriteValue(7) 
writer.WriteEndObject() 
writer.WriteEndObject() 
End Using 

UPDATE:

我認爲在規範括號並不意味着數組。我以某種方式相信這意味着方括號內的部分是可選屬性。

[, "filter" : {"deviceID..."}] 

通知在方括號的內容開始一個逗號,表示filter是可以經過兩次強制屬性messagebadge添加另一個屬性。

+0

如果我添加了WriteEndObject,它會關閉json,並且不允許像我的帖子中的示例那樣寫入任何其他json。 – joebohen

+0

在'WriteEndObject'之前添加任何額外的json。並檢查我的更新,我相信你不打算添加任何數組 – har07

+0

謝謝,這是有道理的,我會嘗試完成JSON和poast它的網站,看看它是否可以。我會回來讓你知道。 – joebohen