本文目錄一覽:
json動態添加數據
向json中添加數據 var json = {}; json.name=”test”; 上面的代碼就會在json這個對象中添加了一個數據 向數組中添加數據 var array = new Array(); var obj = new Object(); obj.name=”test”; array.push(obj); 這裡是添加的一個對象,你也可以直接添加一些字元串等類型的數據
2013-04-01 *
如何使用js 動態創建json分組數據?
之前我已經有講過後台返回json數據到前台,並在前台遍歷json數據。
這裡講下直接在JS里創建JSON數據,然後遍歷使用~
創建代碼如下:(創建的是JSON對象)
?
12345678
var YearSelect = {}; var Year = 2014; var DateOption; for (var i = Year; i Year + 12; i++) { DateOption = {‘Year’:i, ‘Month’:i-Year+1}; / alert(DateOption.Year) YearSelect[i] = DateOption; }
這裡是創建一個JSON對象,包括了年份和月份的數據。
我為什麼創建JSON對象,是因為我對JSON對象比較熟悉。php後台返回的也是json對象。
json對象沒有length屬性~~
所以遍歷的話要:
for(var key in YearSelect){ alert(YearSelect[key].Year); alert(YearSelect[key].Month); }
這樣就可以了~
記住一定要分辨好json的對象和數組~不然就一直是undenfined
Go 語言中的動態 JSON
Go 語言是靜態類型語言,雖然它也可以表現出動態類型,但是使用一個嵌套的 map[string]interface{} 在那裡亂叫會讓代碼變得特別丑。通過掌握語言的靜態特性,我們可以做的更好。
通過同一通道交換多種信息的時候,我們經常需要 JSON 具有動態的,或者更合適的參數內容。首先,讓我們來討論一下消息封裝(message envelopes),JSON 在這裡看起來就像這樣:
通過 interface{},我們可以很容易的將數據結構編碼成為獨立封裝的,具有多種類型的消息體的 JSON 數據。為了生成下面的 JSON :
我們可以使用這些 Go 類型:
輸出的結果是:
這些並沒有什麼特殊的。
如果你想將上面的 JSON 對象解析成為一個 Envelope 類型的對象,最終你會將 Msg 欄位解析成為一個 map[string]interface{}。 這種方式不是很好用,會使你後悔你的選擇。
輸出:
就像前面說的,我推薦修改 Envelope 類型,就像這樣:
json.RawMessage 非常有用,它可以讓你延遲解析相應的 JSON 數據。它會將未處理的數據存儲為 []byte。
這種方式可以讓你顯式控制 Msg 的解析。從而延遲到獲取到 Type 的值之後,依據 Type 的值進行解析。這種方式不好的地方在於你需要先明確解析 Msg,或者你需要單獨分為 EnvelopeIn 和 EnvelopeOut 兩種類型,其中 EnvelopeOut 仍然有 Msg interface{}。
那麼如何將上述兩者好的一面結合起來呢?通過在 interface{} 欄位中放入 *json.RawMessage!
輸出:
雖然我極其推薦你將動態可變的部分放在一個單獨的 key 下面,但是有時你可能需要處理一些預先存在的數據,它們並沒有用這樣的方式進行格式化。
如果可以的話,請使用文章前面提到的風格。
我們可以通過解析兩次數據的方式來解決。
dynamite
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/201069.html