在Javascript对象中显示字典

时间:2011-01-15 22:54:44

标签: javascript dictionary

我从我的服务器返回此响应:

callback({"City": "Miami", "State": "FL", "Street": "9th Street", "Name": "Big 12", "Zip": "65201", "Lat": -48.219999999999999, "Telephone": "5732168906", "Long": 32.0, "Events": "[{\"End Time\": \"2011-01-22 23:36:31\", \"Name\": \"Margaritas\", \"Start Time\": \"2011-01-22 15:36:31\"}, {\"End Time\": \"2011-01-22 19:36:39\", \"Name\": \"Dollar Bottles\", \"Start Time\": \"2011-01-22 15:36:39\"}, {\"End Time\": \"2011-01-23 23:36:31\", \"Name\": \"All You Can Drink\", \"Start Time\": \"2011-01-23 15:36:31\"}]"})

这是我试图解析响应并在我的“今晚列表”中显示它的地方。使用 data.Events ,我可以在屏幕上显示整个字典数组。

function callback(data){
    console.log(data);
    $("#tonight-list").append("<li role='option' tabindex='0' class='ui-li ui-li-static ui-btn-up-c'>Starts:" + 
    data.Events  + 
    "<li>");

但是,我无法弄清楚如何访问每个元素(开始时间,结束时间,名称等)。当我尝试 data.Events [0] 时,它只给出了 data.Events 中的第一个字符。

如何访问事件数组中的每个字典键?我只是无法弄清楚语法 - 如果我能看到这个对象类型的所有选项,那就太好了。感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

JSON老兄!只需从服务器返回有效的JSON并使用evalJSON。然后,您可以通过相应的键访问每个对象。

编辑:

基本上做,

data.responseText.evalJSON();

答案 1 :(得分:1)

将JSON响应中的Events设为真实数组而不是字符串,然后您可以像这样使用它:

var obj = JSON.parse(reponseText);
var event = obj.Events[0];
alert(event["End Time"]); // hurray

JSON响应

callback({
  "City": "Miami",
  "State": "FL",
  "Street": "9th Street",
  "Name": "Big 12",
  "Zip": "65201",
  "Lat": -48.219999999999999,
  "Telephone": "5732168906",
  "Long": 32.0,
  "Events": [{
    "End Time": "2011-01-22 23:36:31",
    "Name": "Margaritas",
    "Start Time": "2011-01-22 15:36:31"
  },
  {
    "End Time": "2011-01-22 19:36:39",
    "Name": "Dollar Bottles",
    "Start Time": "2011-01-22 15:36:39"
  },
  {
    "End Time": "2011-01-23 23:36:31",
    "Name": "All You Can Drink",
    "Start Time": "2011-01-23 15:36:31"
  }]
})​;