json的標準格式

2020-08-13 21:06:29

現在越來越多的專案和開發外掛等預設都會支援和使用json數據格式,作爲數據保持、傳輸的一種方式。
說是其中一種,就標示還有好多其他格式。比如:最多是xml。webservice的標準數據格式。
不過由於json是JavaScript 物件表示法(JavaScript Object Notation),天生就對js支援很好,
所以現在很多的ajax等都使用json,反而會更好處理一些。

1、定義
什麼是 JSON ?
1.JSON 指的是 JavaScript 物件表示法(JavaScript Object Notation)
2.JSON 是輕量級的文字數據交換格式
3.JSON 獨立於語言 *
4.JSON 具有自我描述性,更易理解
***** JSON 使用 JavaScript 語法來描述數據物件,但是 JSON 仍然獨立於語言和平臺。JSON 解析器和 JSON 庫支援許多不同的程式語言。
w3c的標準說明如下:
JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。 易於人閱讀和編寫。同時也易於機器解析和生成。 它基於JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一個子集。 JSON採用完全獨立於語言的文字格式,但是也使用了類似於C語言家族的習慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 這些特性使JSON成爲理想的數據交換語言。

JSON建構於兩種結構:
1.「名稱/值」對的集合(A collection of name/value pairs)。不同的語言中,它被理解爲物件(object),紀錄(record),結構(struct),字典(dictionary),雜湊表(hash table),有鍵列表(keyed list),或者關聯陣列 (associative array)。
2.值的有序列表(An ordered list of values)。在大部分語言中,它被理解爲陣列(array)。
這些都是常見的數據結構。事實上大部分現代計算機語言都以某種形式支援它們。這使得一種數據格式在同樣基於這些結構的程式語言之間交換成爲可能。

JSON具有以下這些形式:
物件是一個無序的「‘名稱/值’對」集合。一個物件以「{」(左括號)開始,「}」(右括號)結束。每個「名稱」後跟一個「:」(冒號);「‘名稱/值’ 對」之間使用「,」(逗號)分隔。

在这里插入图片描述
注意:如果後臺直接傳遞物件來js,則是json格式的。(參考文章可自行在網上查閱資料)
陣列是值(value)的有序集合。一個數組以「[」(左中括號)開始,「]」(右中括號)結束。值之間使用「,」(逗號)分隔。
在这里插入图片描述
注意:傳遞數據這個就好理解。其實就一個array。array和json直接的關係,請參考文章:
[javascript物件及陣列 json的一些瞭解說明]

2、json標準:
json表示:我沒有標準。哈哈。我說的標準是指什麼樣的格式化的字串js才能 纔能解析成json?

下面 下麪這個json串就是正確的:

複製程式碼程式碼如下:

{
「employees」: [
{
「firstName」: 「Bill」,
「lastName」: 「Gates」
},
{
「firstName」: 「George」,
「lastName」: 「Bush」
},
{
「firstName」: 「Thomas」,
「lastName」: 「Carter」
}
]
}

注意:
json串,在js中會解析成物件。其中物件的名稱比如:
employees、firstName,必須用"「或者’'引起來才行。後面的value,如果是int和bool(js是不區分的哦),可以不用」"或者’'引起來,其他的字串必須引起來,尤其是記得把時間日期引起來!

總結如下:
裏面的是一個物件,如果是多個物件,則用逗號間隔,即{},{},這樣就組成了一個物件序列,爲了辨別開始和結束,則需要加上[]才能 纔能進行傳遞,則實際傳遞的形式應該是[{},{}],如果只要傳遞一個物件,則{}的形式就可以了。接下來就是物件屬性的表現方式了,屬性必須在""
裏面,屬性與值之間用:隔開,屬性之間用,來分隔,如果屬性的值爲陣列,則用[]包括起來,這樣實際傳遞的數據格式可能有:1、{「屬性1」:值1,「屬性2」:值2},如果值爲字串,則也需要用""括起來(下同)。2、{「屬性1」:值1,「屬性2」:[值1,值2]},其中屬性2是一個數組,包含
了值1和值2。3、{「屬性1」:值1,「屬性2」:{「屬性a」:值a,「屬性b」:[值b,值c]}},這個比較複雜了,屬性2是個物件,這個物件由包含屬性a和屬性b,屬性b又是一個數組包含值b和值c。我想這些應該是最基本了,其餘的就是在此基礎上的拓展而已。

實際中,要序列化物件,在.net中只要呼叫Newtonsoft.Json.JavaConvert.SerializeObject();函數即可

可以參考:
jquery ajax傳遞物件(陣列)到後臺並解析的實現

http://www.jb51.net/article/40131.htm

3、json有這麼多要求(其實不多了),我們怎麼判斷其正確性?
有辦法,就是你列印出來字串,自己的按照上面的結構對應一下,或者直接使用線上檢驗工具檢驗。

可以參考:http://www.kjson.com/
http://tool.oschina.net/codeformat/json

對你有幫助的話,記得點贊收藏哦!