2013-01-14 52 views
0

初學者問題初始化數組:我想創建並使用下面的字符串作爲初始數據中的JavaScript初始化用戶數組:(怎麼了?)的JavaScript:從字符串

{ "user": {"notes": [{ "text": "Hello ", "date": "12\/1\/2013 5:01:36 AM", }], "name": "Alex"} }, { "user": { "notes": [{ "text": "Hi ", "date": "12\/1\/2013 5:15:19 PM"}, { "text": "It is me", "date": "12\/1\/2013 6:23:54 PM"}], "name": "Anna"} } 

是否有可能在一般還是我完全搞錯了?

回答

0

你JSON是無效的。它包含語法錯誤(在問題中可能出現拼寫錯誤) - 在第一個用戶的date之後無效的逗號,並且它也是不包含在數組語法[]中的對象列表。

解析的修正JSON和例子是:

Demo

var json = '[{ "user": {"notes": [{ "text": "Hello ", "date": "12\/1\/2013 5:01:36 AM" }], "name": "Alex"} }, { "user": { "notes": [{ "text": "Hi ", "date": "12\/1\/2013 5:15:19 PM"}, { "text": "It is me", "date": "12\/1\/2013 6:23:54 PM"}], "name": "Anna"} }]'; 
//  ^the list of objects need to be enclosed with [] 
var users = JSON.parse(json); 

for(var i=0; i<users.length; i++) 
{ 
    console.log(users[i].user.name); 
} 
0
  1. 確保JSON代碼有效,爲此使用JSONLint。你的代碼存在錯誤,我在下面的代碼中修復了它。

  2. 使用JSON.parse()將其轉移到對象。

  3. 爲了與所有瀏覽器兼容,請確保您也包含json2(並非所有瀏覽器都具有JSON對象來調用JSON.parse函數)。

  4. 正如安東尼所說,結果不是一個數組,而是一個對象。要遍歷用戶列表,請參見jsfiddle或下面的示例。

var str = "[{user:..."; 
var userList = JSON.parse(str); 

for(var i in userList){ 
    var user = userList[i].user; 
    document.write(user.name + "<br/>"); 
} 

糾正JSON

[ 
{ 
    \"user\": { 
     \"notes\": [ 
      { 
       \"text\": \"Hello \", 
       \"date\": \"12/1/2013 5:01:36 AM\" 
      } 
     ], 
     \"name\": \"Alex\" 
    } 
}, 
{ 
    \"user\": { 
     \"notes\": [ 
      { 
       \"text\": \"Hi \", 
       \"date\": \"12/1/2013 5:15:19 PM\" 
      }, 
      { 
       \"text\": \"It is me\", 
       \"date\": \"12/1/2013 6:23:54 PM\" 
      } 
     ], 
     \"name\": \"Anna\" 
    } 
} 
] 
+1

值得注意的是,提供的JSON中的'user'不是**數組,它只是一個對象。 –

+0

是的,謝謝。我會在一秒鐘內完成。 – Marc

+0

這是爲什麼低估了兩次?怎麼了?應該有一個規則,不能沒有評論downvote ... – Marc

0

一般來說,你使用了Ajax調用,正確的字符串?
,您可以在所有現代瀏覽器中使用JSON.parse(strToBeConverted)
將該字符串轉換爲javascript對象。
如果沒有這樣的內置JSON對象會怎麼樣?按照下面的說法,
1.導入JS從this site下載由Douglas Crockford創建,
2.使用JSON.parse完成您的業務。