Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 什么';解析JSON字符串的最佳方法是什么?_Jquery_Json_Parsing_Getjson - Fatal编程技术网

Jquery 什么';解析JSON字符串的最佳方法是什么?

Jquery 什么';解析JSON字符串的最佳方法是什么?,jquery,json,parsing,getjson,Jquery,Json,Parsing,Getjson,我使用$.getJSON生成了一个JavaScript对象(称之为'jItems')。在页面上,我有一个jItems中的项目适合的类别列表。我的愿望是单击一个类别并触发一个函数以仅显示该类别中的项目。使用getJson或jquery的each()或find()从jItems中提取正确的项目是否更好?JSON的妙处在于您不需要解析它。它已经是一个JavaScript对象了。您需要做的是循环遍历这些值,并为您的类别列表构建输出 如果看不到您的JSON结构,我将无法提出更多建议。这取决于您的数据外观,

我使用
$.getJSON
生成了一个JavaScript对象(称之为
'jItems'
)。在页面上,我有一个jItems中的项目适合的类别列表。我的愿望是单击一个类别并触发一个函数以仅显示该类别中的项目。使用
getJson
或jquery的
each()
find()
jItems
中提取正确的项目是否更好?

JSON的妙处在于您不需要解析它。它已经是一个JavaScript对象了。您需要做的是循环遍历这些值,并为您的类别列表构建输出


如果看不到您的JSON结构,我将无法提出更多建议。

这取决于您的数据外观,但这可能会帮助您我认为:

var jsonCats = [
    {"id": "category1", "items": [{"iid":"item1"}, {"iid":"item2"}, {"iid":"item3"}]},
    {"id": "category2", "items": [{"iid":"item4"}, {"iid":"item5"}, {"iid":"item6"}]},
    {"id": "category3", "items": [{"iid":"item7"}, {"iid":"item8"}, {"iid":"item9"}]},
    {"id": "category4", "items": [{"iid":"item0"}]}
];

$.each(jsonCats, function(key, value) {
    var category = $("<li>" + this.id + "</li>");
    var items = this.items;

    $("#categories").append(category);

    category.click(function() {
        $("#items").empty();
        for (var j in items) {
            var item = $("<option>" + items[j].iid + "</option>");

            $("#items").append(item);
        }
    });
});
var jsonCats=[
{“id”:“category1”,“items”:[{“iid”:“item1”},{“iid”:“item2”},{“iid”:“item3”}]},
{“id”:“category2”,“items”:[{“iid”:“item4”},{“iid”:“item5”},{“iid”:“item6”}]},
{“id”:“category3”,“items”:[{“iid”:“item7”},{“iid”:“item8”},{“iid”:“item9”}]},
{“id”:“category4”,“items”:[{“iid”:“item0”}]}
];
$.each(jsonCats、函数(键、值){
变量类别=$(“
  • ”+this.id+“
  • ”); var items=此项。项; $(“#类别”)。追加(类别); 类别。单击(函数(){ $(“#项”).empty(); 用于(项目中的var j){ var item=$(“”+items[j].iid+“”); $(“#项目”)。追加(项目); } }); });
    要查看示例,请执行以下操作:

    编辑: 现在我又读了一遍你的问题。。。实际上,使用for循环更好,因为这样更快。$.each()无论如何都是for循环的包装器。(因此举了一个例子:D)


    getJson
    从服务器中提取JSON字符串。您不需要以任何方式使用它吗?存储
    getJSON
    调用的结果,然后在单击时解析所需的部分…
    。find()
    仅用于DOM元素。请注意,没有“JSON对象”这样的东西。JSON是一种常用于序列化JavaScript对象的字符串表示形式。一旦它被解析(在JavaScript中),它就是一个JavaScript对象,而不是JSON对象。我只是回应你的评论,它只适用于DOM元素<代码>:)你是说,
    $.getJSON
    的美,对吗?(JSON是一个字符串值。它需要通过
    JSON.parse()
    或类似函数进行解析,以获得相应的对象值。)只有通过AJAX获取时才需要这样做。JSON本身不需要这样做,我认为你把JSON和JavaScript的对象文字符号混淆了。示例:
    var-json='{“foo:123}';var obj={foo:123}。根据定义,JSON是一个字符串(值)。首先,需要将其解析为对象值。如果您的意思不是字符串,那么它就不是JSON。@ŠimeVidas JSON文本对于JavaScript就像XML文本对于Scala一样。JSON可以在JavaScript中以本机文字对象的形式表示。与语言文本中存在整数文本并解析为本机结构的方式完全相同。它的解析方式与此无关。尽管周围的文本不是有效的XML,即使Scala编译器将XML转换为本机数据结构,但它仍然是文本上完全相同的JSON语法,与Scala中的XML文本完全相同。这是我最后一次讨论这个问题。祝你好运。@ŠimeVidas如果它像鸭子一样嘎嘎叫<代码>{“foo”:“bar”}
    是JSON。它也是一个有效的JavaScript文本。因此,JSON文本在JavaScript中是有效的,无需表示为字符串!事实上,你之前的评论也是如此。子集意味着JSON是一个对象文字,但对象文字比JSON更多。别想把话塞进我的嘴里!!!我从没说过他们是一样的。只是JSON也是一个JavaScript对象,JSON.org网站同意我的观点!这场争论结束了。你已经证明我是对的!