4

我需要从一个站点获取一些 JSON 并解析它。问题是对象被命名为“-1”“-2”等等。

当我尝试解析它时,Firebug 回来了,“TypeError: obj is undefined length = obj.length”

Chrome 会返回类似的消息,“未捕获的类型错误:无法读取未定义的属性‘长度’”

作为参考,这里是 JSON 的片段:

{
  "-1": {
     "number": 47,
     "properties": [
       [

这是我正在尝试使用的代码。

$.getJSON("http://www.website.com/builds?select=-1&select=-10",function(data){
  $.each(data.-1, function(info,value){

如果我下载 JSON,将其保存在本地并将“-1”重命名为“one”,将“-2”重命名为“two”,则可以正常工作。例如,JSON 变为:

{
  "one": {
     "number": 47,
     "properties": [
       [

我的代码变成了

$.getJSON("C:\json.json",function(data){
    $.each(data.one, function(info,value){

这工作正常,但它增加了另一个复杂的步骤。

有没有办法解析原始 JSON(因为它是从服务器自动生成的,并且经常更改),还是我一直在试图弄清楚如何在本地保存它并在解析之前更改对象名称?

4

1 回答 1

7

data.-1必须使用括号表示法作为字符串引用。

data["-1"]

于 2013-01-24T20:01:36.940 回答