如何操作JSON对象以删除Javascript中的根密钥?

时间:2013-11-25 07:17:38

标签: javascript jquery json

我有一个json url,它以

格式返回数据
{
  "photos" : [
    {
      "id": 1, "image":"https://path/to/my/image/1.jpg"
    },
    {
      "id": 2, "image":"https://path/to/my/image/2.jpg"
    }
  ]
}

我在javascript函数中使用json,需要对其进行操作以删除根密钥。即我想要一些看起来像

的东西
[
  {
    "id": 1, "image":"https://path/to/my/image/1.jpg"
  },
  {
    "id": 2, "image":"https://path/to/my/image/2.jpg"
  }
]

我一直在用各种方法进行攻击,并在SO上提到了几个类似的帖子,但似乎没有任何效果。以下似乎应该如此。

var url = 'http://path/to/my/json/feed.json';
var jsonSource = $.getJSON( url );
var jsonParsed = $.parseJSON(jsonSource);
var jsonFeed = jsonParsed.photos

我做错了什么?

1 个答案:

答案 0 :(得分:5)

那里有几个问题。

  1. 这是无效的JSON,有两种不同的方式。 A):之后的"photos"意味着它是属性初始值设定项,但是当它应该在对象([...])内时,它在数组({...})内。 B)"键前面有额外的images个字符。所以首先要解决这个问题。

  2. 您尝试使用$.getJSON的返回值,就好像它是包含JSON文本的字符串一样。但$.getJSON会返回jqXHR个对象。你需要给它一个成功的回调。该回调将使用对象图调用,JSON会自动为您解析。

  3. 假设JSON修复如下:

    {
        "photos": [
          {
              "id": 1,
              "image": "https://path/to/my/image/1.jpg"
          },
          {
              "id": 2,
              "image": "https://path/to/my/image/2.jpg"
          }
        ]
    }
    

    然后:

    $.getJSON(url, function(data) {
        var photos = data.photos;
    
        // `photos` now refers to the array of photos
    });