1. 程式人生 > >Json操作問題總結

Json操作問題總結

數字 這樣的 ges 技術分享 習慣 解析json eval ray arr

大家都知道,Json是一種輕量級的數據交換格式,對JS處理數據來說是很理想滴!

熟練寫過xxx.json文件和操作的小夥伴來說,我說的問題都不是什麽大問題啦,可以忽略本寶寶的文章,更希望各位大佬指點一番(●‘?‘●)

?

問題一,數據格式問題

  第①種,完全正確的寫法;

[
  {"name":"aaa中文測試","payment":"999","url":"http://www.bejson.com","asdf":"asdf"},
  {"name":"bbb","payment":"888","url":"http://www.bejson.com","asdf":"asdf"},
  {"name":"ccc中文測試","payment":"777","url":"http://www.bejson.com","asdf":"asdf"},
  {"name":"ddd","payment":"666","url":"http://www.bejson.com","asdf":"asdf
]

  第②種,雷區錯誤的寫法:

[
  {name:"aaa中文測試",payment:"999",url:"http://www.bejson.com",asdf:"asdf"},
  {name:"bbb",payment:"888",url:"http://www.bejson.com",asdf:"asdf"},
  {name:"ccc中文測試",payment:"777",url:"http://www.bejson.com",asdf:"asdf"},
  {name:"ddd",payment:"666",url:"http://www.bejson.com",asdf:"asdf"}
]

  看清楚了啊各位,沒有引號的key ↑ 這種,你放在xxx.json文件中檢驗是通不過的,所以就會報錯的哇,這是一個特大的誤區!

  你要是放在xxx.js中這樣寫沒人管你啊,但你現在要是在xxx.json中這樣寫是絕對不行的;

  JSON官網最新規範有規定啊,只要是字符串,不管是key還是value都需要用引號引起來,不要小看這個引號,就像本寶寶,寫js寫習慣了沒有加引號,結果硬是沒發現這個問題,白白浪費了大好時光/(ㄒoㄒ)/~~

  不要反駁為什麽要加引號,官網就是這麽定義的。

?

問題二,數據結構問題

  JSON就是一串字符串,只不過元素會使用特定的符號標註。

  { } 雙括號表示對象

  [ ] 中括號表示數組

  " " 雙引號內是屬性或值

  總結來說:{"key" : "value"}

  key定義的屬性名啦,value可以是字符串、數字、布爾、數組、對象等值;

  所以可以使用這樣的結構來寫json:

{"name": "chuyue0"} 
{"name":["chuyue0","chuyue1"]} 
[{"name": "chuyue0"},{"name": "chuyue1"}]//第二種分開寫,本寶寶習慣用這種??

我想到了個問題,看到的大佬解答下,JS有集合的說法麽,如有,形式是怎樣的呢,同數組嗎?

?問題一二都是平時應該註意的小問題,只要仔細、熟練,問題就不大!

?

問題三,相互轉換問題

在數據傳輸過程中,Json是以字符串的形式傳遞的;JS操作的是Json對象,所以需要使用特定方法來轉換!

var str = ‘{ "name": "chuyue0", "sex": "female" }‘; //json字符串
var data=eval("("+str+")"); //轉換為Json對象
console.log(data.name)

技術分享

?使用eval()解析Json不安全

  現在大部分現代瀏覽器(IE9+)都自帶原生JSON對象,提供方法解析!

  ① Json字符串轉換為Json對象

var str = ‘{ "name": "chuyue0", "sex": "female" }‘;
var data=JSON.parse(str);
console.log(data);

  技術分享

  如果parse()方法拋異常,加入對Json字符串的判斷試試(typeof(str)===‘string‘)

  jQuery使用方法:$.parseJSON( str); 或者jQuery.parseJSON(str);

  轉換為對象後就可以進行其他的操作啦o(* ̄▽ ̄*)ブ

  ② Json對象轉換為Json字符串

var obj2 = { "name": "chuyue0", "sex": "female" };//Json對象
var str2 = JSON.stringify(obj2 );
console.log(str2);

  技術分享

?如果data已經是Json對象,進行eval()轉換後就會報錯,如下圖:

  技術分享

補充,

  數組轉字符串: array.join(‘,‘)

  字符串轉數組: str.split(‘,‘)

  技術分享

?

以上就是在操作Json的時候遇到各種的問題,希望通過自己的錯誤認識來幫助到大家~~~~~~

全篇筆心哦~~~

  

Json操作問題總結