优化解析JSON数据的方法

时间:2012-05-07 10:58:25

标签: javascript jquery json

我有一个JSON数据

[
    {
        "Name": "Tom",
        "Email": "tom@gmail.com",
        "Notes": "Yea, it's good",
        "Ratings": "5",
        "Messages": [
            "Tom - I am good",
            "System - How're you doing?",
            "Tom - True, that!",
            "System - Oh Yes! ;) "
        ]
    },
    {
        "Name": "Sunny",
        "Email": "sunny@gmail.com",
        "Notes": "Yea, it's good",
        "Ratings": "2",
        "Messages": [
            "Sunny-I am good",
            "System - How're you doing?",
            "Sunny - True, that!",
            "System - Oh Yes! ;) "
        ]
    }
]

我正在使用jQuery解析它并像这样迭代它;

            var jsonData = $("#jsonData").val();
            var plainData = $.parseJSON(jsonData);

            for (var j = 0; j < plainData.length; j++) {
                var Name = plainData[j].Name;
                var Email = plainData[j].Email;
                var Notes = plainData[j].Notes;
                var Ratings = plainData[j].Ratings;

                var Messages = plainData[j].Messages;
                var _messages = " ";
                for (var i = 0; i < Messages.length; i++)
                    _messages += Messages[i] + "\n";

            }

我不太确定在for循环中迭代这个是个好主意。任何人都可以建议我更好/优化的方法来迭代解析的json值吗?

2 个答案:

答案 0 :(得分:2)

你刚才这样做的方式是最有效的方法,除了:

var Messages = plainData[j].Messages;
var _messages = " ";
for (var i = 0; i < Messages.length; i++)
    _messages += Messages[i] + "\n";

也可以写得更好:

_messages = plainData[j].Messages.join('\n') + '\n';

答案 1 :(得分:1)

在较旧的浏览器中(有些不太旧),如果可以使用,则负循环将比for循环更快:

而不是

for (var j = 0; j < plainData.length; j++) { 

使用

var j=plainData.length;
while(j--) {

曾经有一个博客参考了一些量化指标,但该页面已经死了,但结果可以很容易地复制。

关于为什么比较是等于零而不是比较大于或小于比较的猜测以及作为解释语言的Javascript可以内联代码以使用已知的termis点进行优化,但我不这样做对这一陈述有定量的了解。

在网络房间闲逛之后,我发现了一些量化:

https://blogs.oracle.com/greimer/entry/best_way_to_code_a