【问题标题】:Parse External JSON File with jQuery使用 jQuery 解析外部 JSON 文件
【发布时间】:2012-06-01 18:52:03
【问题描述】:

我有一个 2 MB JSON 对象,我希望用 jQuery 解析它。我将整个对象转储到一个名为“timeline.js”的文件中,我希望将其作为数据集解析,以便根据需要获取记录。

我的数据集最初是一个 XML 文件,但我读到 JSON 会更有效,因为我使用 jQuery 来提取数据并将其放入 DOM。

以下是我的对象的第一条记录。我将如何解析此对象以获取“profileid”为 1016 的记录?

{
timeline:{
    record:[
        {
            profileid:1016,
            title:'Adam',
            parentprofileid:0,
            type:'Person',
            minzoomlevel:29,
            maxzoomlevel:66,
            isapproxstart:1,
            isapproxend:1,
            startdate:-4181,
            enddate:-3251,
            shortdescription:'Name means "red" or "man" he is...',
            article:'<div><span>The first member of...',
            status:22,
            scriptures:{
                scripture:[
                    {
                        profileid:1016,
                        scripturetext:'Genesis 2:7',
                        referencetext:'Birth'
                    },
                    {
                        profileid:1016,
                        scripturetext:'Genesis 5:4',
                        referencetext:'Death'
                    }
                ]
            }
        },

【问题讨论】:

    标签: javascript jquery xml ajax json


    【解决方案1】:

    jQuery parseJSON 可以正常工作,但是在使用 jQuery AJAX 并将 dataType 设置为 JSON 时是不必要的(它在接收到数据后已经被 jQuery 解析)。

    但是,我想您的实际问题是如何找到具有例如 profileid 的记录1016. 由于所有项目都在一个数组中,因此找到它的唯一方法是循环该数组并检查为当前项目设置的profileId。例如:

    for(var i in items){
        if(items[i].profileid == 1016){
           //execute whatever you want to do.
        }
    }
    

    【讨论】:

      【解决方案2】:

      利用 :jQuery.parseJSON( json ) - 采用格式良好的 JSON 字符串并返回结果 JavaScript 对象。 示例

      var obj = jQuery.parseJSON('{"name":"John"}');
       alert( obj.name === "John" );
      

      【讨论】:

      • 通过这样做 - codevar obj = jQuery.parseJSON('timeline.js');code - 这不是将整个 JSON 对象存储在内存中吗?还是每次调用 obj 时它都会简单地解析 JSON?
      猜你喜欢
      • 1970-01-01
      • 2012-10-21
      • 1970-01-01
      • 2012-06-22
      • 2013-11-25
      • 1970-01-01
      • 2015-09-15
      • 1970-01-01
      • 2022-08-16
      相关资源
      最近更新 更多