如何使用动态值解析和输出JSON对象?

时间:2010-12-28 20:04:03

标签: javascript json

我需要输出JSON对象,如下所示:

{
    "dynamicvaluenumberone":3,
    "dynamicvaluenumbertwo":7
}

在某些东西中,看起来像:     dynamicvaluenumberone (3), dynamicvaluenumbertwo(7)

我发现了一些带静态值的文章或用jQuery解析JSON。我不想使用任何框架来完成这个简单的任务。

2 个答案:

答案 0 :(得分:4)

您是否尝试过JSON.parse

var json = '{"dynamicvaluenumberone":3, "dynamicvaluenumbertwo":7}';
var obj = JSON.parse(json);

要访问动态键,您可以使用for...in

循环键
for(var i in obj) {
    console.log(i + " (" + obj[i] + ")");
}

更新:根据您需要支持的浏览器,JSON库也可在此处找到:http://www.json.org/js.html

答案 1 :(得分:1)

可以在此处找到参考JSON站点:

http://json.org/

(它也与Felix答案中提到的Mozilla文章有关)。

可在此处找到与浏览器无关的参考JavaScript JSON解析器(从“JavaScript”语言下的json.org根站点链接):

https://github.com/douglascrockford/JSON-js

(json2.js是你想要的那个)。道格拉斯·克罗克福德的参考实现的好处在于它将使用浏览器原生的JSON解析器(如果可用的话(快速,高效 - 在IE8 +标准模式下可用,最新的Opera,Chrome,Safari,FireFox - 这就是Felix的链接所说的),仅在本机JSON解析器不可用的浏览器中回退到JavaScript实现(缓慢)。

我多年来一直在使用json2.js并强烈推荐它: - )。

说明如何使用它的简单示例(另存为“test.html”并在任何浏览器中打开):

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>JSON parser test</title>
    </head>
    <body>
        <script type="text/javascript" src="http://github.com/douglascrockford/JSON-js/raw/master/json2.js"></script>
        <script type="text/javascript">

            var str = "{ \"dynamicvaluenumberone\":3, \"dynamicvaluenumbertwo\":7, \"dynamicvaluenumberthree\":\"hello\" }";
            var obj = JSON.parse(str);

            alert(
                "Parsed object type: " + typeof obj + "\n" +
                "Value 1: " + obj.dynamicvaluenumberone + " (" + typeof obj.dynamicvaluenumberone + ")\n" +
                "Value 2: " + obj.dynamicvaluenumbertwo + " (" + typeof obj.dynamicvaluenumbertwo + ")\n" +
                "Value 3: " + obj.dynamicvaluenumberthree + " (" + typeof obj.dynamicvaluenumberthree + ")");

        </script>
    </body>
</html>