javascript - 如何以数字为键解析 JSON

标签 javascript json

我有以下 json,不幸的是我无法控制这个输出。

{
"questions": {
    "9733": {
        "text": "Star Trek or Star Wars?",
        "answers": {
            "41003": "Star Trek",
            "41004": "Star Wars",
            "41005": "Neither is superior in my opinion; both great in their own ways",
            "41006": "Not a fan",
            "41007": "I don't have an opinion on this"
        }
    },
    "25272": {
        "text": "Which of these summer movies are you looking forward to the most?",
        "answers": {
            "99545": "World War Z",
            "99546": "Monsters University ",
            "99547": "White House Down",
            "99548": "Man of Steel",
            "99549": "Lone Ranger",
            "99550": "The Wolverine"
        }
    },
    "27547": {
        "text": "Should the U.S. attack Syria?",
        "answers": {
            "107453": "Yes",
            "107454": "No"
        }
    }
}
}

我正在使用 json.parse 来解析它。为了得到第一个问题的文本,我通常会这样做。

var jsonData = JSON.parse(data);//Where data = the json above
console.log(jsonData.questions.9733.text);//Obviously this fails

然而 javascript 显然不喜欢那个数字。您如何建议访问第一个问题的文本?我希望在一系列问题中更好地设置 json。不幸的是,我无法控制这个 JSON 的输出。

我也不会知道遇到的键是什么,但那是另一个问题。我愿意接受任何关于如何解析这个东西的建议,因为我从来没有解析过如此奇怪的 JSON 输出。

最佳答案

您需要使用 bracket notation :

console.log(jsonData.questions["9733"].text);

但是因为括号内的值会自动转换成字符串,这也行:

console.log(jsonData.questions[9733].text);

但是请注意,使用非字符串作为属性名称通常是错误的形式,并且可能导致一些微妙的问题,例如如果属性名称是 "001",那么 [001]不起作用

关于javascript - 如何以数字为键解析 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23552708/

相关文章:

javascript - 将今天的日期加上两天插入页面上的文本(JavaScript?)

php - 如何在 PHP 5.3.0 之前验证 JSON?

json - 数据工厂 : AzureSQL in- and output for pipeline activity type AzureMLBatchExecution

javascript - 将事件绑定(bind)到文本节点

javascript - 将动态按钮添加到开头

javascript - 不带参数的条件语句

javascript - react 原生 : How do you disable the idle timer?

json - Scala:Option[Boolean] 有意义吗?

Android从url解析json并存储

objective-c - 如何用 ASIHttpRequest JSON 数据填充 UITableView?