使用GetJSON Jquery解析复杂的数组

问题描述 投票:1回答:3

TLDR:

  1. this question开头简化了它的一部分,然后在这里继续进行。
  2. 我需要'获取'JSON数组
  3. 正确格式化它,并在数组中将其放置在相应的DIV中。
  4. ??
  5. 有效。

这是this question的后续工作,以简化并继续。

我需要从数组中获取一些复杂的JSON数据。有了它,我需要标题和它的价值。我这样做的原因是因为我将知道调用了什么数组,但不知道数组内部正在生成的数据。

让我们说这个新数组如下:

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

感谢(Matthew Flaschen)的感谢

我需要它来获取周日和10.00,以及其他所有主题都一样。

此刻我解析此代码如下:

$.getJSON(url,
  function(data) {
    $.each(data, function(i, item) {
      $('.testfield').append('<p>' + item + '</p>');
    });
  });

没有每个日期的增加时间,它将按如下方式分析数据:

Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday

[将时间添加到数组中的日期后,Firebug不再将其识别为JSON字符串。所以我想我在这里格式化错误。另外,我需要每天和每个时间都换行,我认为

$('.testfield').append('<p>' + item + '</p>' + '<br />');

将每个人都应用到新行上,但这行不通。

  1. 如何获得每天或每条新的一行?
  2. 我如何获得$ getjson以正确地将数据及其值解析为div?
jquery ajax json arrays getjson
3个回答
2
投票

尝试一下(重新格式化的JSON-下次使用JSONLint检查您的JSON):

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

使用脚本:

 $.getJSON( url, function(data){
  $.each(data.Days[0], function(key,value){
   $('.testfield').append('<p>' + key + ' : ' + value + '</p>');
  });
 });

1
投票

这不是有效的JSON。做类似的事情:

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

始终使用JSONLint或其他验证器来检查语法。


0
投票

有点偏离主题,但是如果不确定内容,则应使用安全的方法将数据插入DOM。否则,您的代码将具有XSS漏洞。

并且除了安全性问题外,诸如“ Foo Bar ”之类的任何数据都不会按照您(可能)的需要呈现。

例如,您可以使用jQuery text()方法:

$('.testfield').append($('<p></p>').text(item));
© www.soinside.com 2019 - 2024. All rights reserved.