getjson jquery解析数组

Posted

技术标签:

【中文标题】getjson jquery解析数组【英文标题】:getjson jquery parsing an array 【发布时间】:2011-02-13 05:28:12 【问题描述】:

简化数组的工作见下文

后续要解析的复杂数组见here。


TLDR:想要从数组中获取每个标题并将其插入到 div 中,而无需使用 Jquery - getJSON 知道 div 内的内容。

编辑:数据来自一个软件,该软件每隔几秒输出 JSON 字符串和新数据,所以我需要在“d”中提取数据数组,如下面的例子。所以我应该得到每个“标题”和“034324324”等。

Edit2 更新代码以完全匹配我的..

我有 JSON 数组让我们说:


  "Days": ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]

我想将其解析为每个“标题”以将其插入到 div 中。

尝试沿线

function getdata() 
31 $.ajaxSetup ( cache: false); //<!-- Stops IE from caching data //-->
32 
33 $.getJSON(testurl, function(data) 
34 $.each(data.days, function(i,item)
35 $('#testfield').append('<p>' + item + '</p>');
36
37 );
38 ); 

无济于事。

我在其他地方使用 Getjson,但在我知道我提出什么请求的情况下。 例如:

$('#name').html(data.Projectname);

这一切都很好,但在这种情况下,我需要在不知道数组内部有什么的情况下从数组中获取详细信息

我目前使用的 JSON 格式如下:

"Projectname":"ertyofhj","Projectid":"aqwertyuqw","Projecttitle":"ertyofhj"

数组只是一种在不知道数组内部是什么的情况下查看提取数据的方法。

我只是继续添加更多。 调试 firebug 或 IE 的调试器(Aargh) 会命中

33 $.getJSON(testurl, function(data) 

然后

38 );

完全跳过

34 $.each(data.days, function(i,item)

-GET 请求触发正常并返回正确的 JSON 字符串。但是现在它不会填充 $.each,或者即使我专门要求某个字符串。 注意到上面的 Firebug 还告诉我它没有格式化为 JSON?

将原始 JSON 字符串更改为更简单的字符串。(星期几)因为将加载星期几。所以我在某个地方。但我需要能够调用更复杂的数组。例如(使用天数)每天都有一个特定的时间,我也需要显示每天也应该在一个新行上尝试添加一个“+''但这也不起作用. 以数组形式显示如:


  "Days": ["Sunday": "10.00", "Monday": "12.00", "Tuesday": "09.00", "Wednesday": "10.00", "Thursday": "02.00", "Friday": "05.00", "Saturday": "08.00"]

我需要为所有人提取 Dayname 和 time。

【问题讨论】:

或者更难的是如何在没有数组的情况下从 JSON 字符串中获取所有详细信息/根本不知道其中的内容(如果可能的话:P) 【参考方案1】:
$.getJSON(url,
    function(data)
      $.each(data.items, function(i,item)
      $('#testfield').html('<p>' + item.d.title + '</p>');
      );
    );

在此代码中,您最终将使用 ID 为“testfield”的项目的 HTML 一次又一次地替换为值...您可能想尝试使用 jQuery.append 添加所有条目上面已经指定了

$.getJSON(url,
    function(data)
      $.each(data.items, function(i,item)
      $('#testfield').append('<p>' + item.d.title + '</p>');
      );
    );

【讨论】:

这很有意义。但遗憾的是它仍然对我不起作用:P 是您的数据格式错误。在您上面的日期示例(工作日后跟一个值)中,您在其中错误地指定了元素。例如,每个元素都需要 "Sunday" : "10.00" 等。请参阅下面的其他答案。【参考方案2】:

您的 JSON 数据中有一个错误:您没有在最后三项中的“d”之后使用冒号。这是您的应用程序正在使用的真实数据的示例,还是用于演示您的问题的示例数据?

【讨论】:

是循环中使用的局部变量。 这是一个示例,用于演示我在使用 Flickr 设置的工作后遇到的问题。从一个例子。只是比 flickr json 字符串减少了很多。但是是的,在那张纸条上,它们应该有冒号。 在我尝试使用的“测试示例”中添加了冒号。【参考方案3】:

希望这个例子能为你指明正确的方向


<html>
<head>
  <title>***</title>
  // ** POINT THIS TO A VALID jquery.js LOCATION
  <script src="jquery.js" type="text/javascript"></script>
  <script>
    var days = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ];
    // *****************************************************
    // This is your data from getJSON if correctly formatted
    var data = '"Days":[ "Sunday":"10.00", "Monday":"12.00", "Tuesday":"09.00", "Wednesday":"10.00", "Thursday":"02.00", "Friday":"05.00", "Saturday":"08.00"]';
    runUpdate = function() 
      // *******************************************************
      // Clear the div of all data by replacing it
      $('#testfield').replaceWith('<div id="testfield"></div>');
      var dataObject= $.parseJSON( data );
      $.each( dataObject.Days, function (index, value) 
        // ********************************************
        // Append new elements to the newly created div
        $('#testfield').append("<p>"+days[index]+": "+value[ days[index] ]+"</p>");
      );
    ;

    runReset = function() 
      $('#testfield').replaceWith('<div id="testfield">This is original text.</div>');
    ;
  </script>
</head>
<body>
  <div id="testfield">
    This is original text.
  </div>
  <div>
    <input type="button" value="Run Update" onclick="runUpdate();" />
    <input type="button" value="Reset" onclick="runReset();" />
  </div>
</body>
</html>

【讨论】:

以上是关于getjson jquery解析数组的主要内容,如果未能解决你的问题,请参考以下文章

jQuery .getJSON 返回到数组变量和 json 数组操作

jQuery $.getJSON 和遍历数组正在倾尽全力

使用 jQuery getJson 发送列表/数组作为参数

如何使用 getJSON 从文件中获取 JSON 数组?

如何从 $.getJSON 调用以 print_r() 方式打印关联数组?

使用 Jquery $getJSON 如何在 Url 参数之后为 [data] 参数动态创建数据?