2014-02-20 101 views
0

我試圖將數據推送到瀏覽器。如何獲得JSON到一個Javascript數組?然後我可以使用它來選擇第一個鍵值或排序對象。Websockets JSON to Javascript array

下面是在瀏覽器/客戶端的代碼:

socket.on('notification', function (data) { 
    $.each(data.users,function(index,user) { 
     usersList = user.Bob // How to select unknown value/key? Example user[0] 
    }); 
    $('#koersgroot').html(usersList); 
}); 

這裏的JSON格式

{ 
    "users": [ 
     { 
      "Bob": 1, 
      "Alice": 2, 
      "Carol": 3 
     } 
    ] 
} 
+0

JSON在哪裏? JSON是* text *;人們可以談論JS對象*沒有* JSON(這是*文本*)!並且要在JSON和JS對象之間進行轉換,請使用'JSON.parse/stringify' ..但我懷疑它(即「JSON」)與問題無關。 – user2864740

+0

這是無效的JSON或是「用戶」:套接字消息的一部分?此外,你使用什麼套接字庫? – Bergi

+0

JSON應該是有效的。我在JSONlint中運行它。我使用的是socket.io,Node.js,mysql。是的,JSON是套接字消息的一部分。 – user3071491

回答

1

JSON是數據的表示。在JS中,它是Object數據類型,而JSON可以表示爲字符串。當你通過WebSockets發送任何東西時 - 即字符串或二進制。

但是socket.io允許你發送對象(JSON),實際上它會對該對象進行字符串化,然後在接收端將它解析回JSON。

爲了發送JSON,只是發出對象:

var obj = { 
    users: [ 
     { 
      "foo": 4, 
      "bar": 2 
     } 
    ] 
}; 
socket.emit('notification', obj); 

而且socket.io會做系列化/ deserialisation你。因此,在客戶端:

socket.on('nitification', function(obj) { 
    // obj is an object 
    obj.users[0].foo == 4; // true 
}); 

你的問題顯然是缺乏瞭解的結果,所以你需要閱讀多一點,並檢查了例子,因爲這樣你問過以及術語就是「錯誤」。