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

And*_*vey 1 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"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我在javascript函数中使用json,需要操作它来删除根密钥.即我想要的东西看起来像

[
  {
    "id": 1, "image":"https://path/to/my/image/1.jpg"
  },
  {
    "id": 2, "image":"https://path/to/my/image/2.jpg"
  }
]
Run Code Online (Sandbox Code Playgroud)

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

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

我究竟做错了什么?

T.J*_*der 5

那里有几个问题.

  1. 这是无效的JSON,有两种不同的方式.A):after "photos"表示它是一个属性初始值设定项,但是[...]当它应该在一个object({...})内时,它在一个array()内.B)键"前面有额外的字符images.所以首先要解决这个问题.

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

假设JSON修复如下:

{
    "photos": [
      {
          "id": 1,
          "image": "https://path/to/my/image/1.jpg"
      },
      {
          "id": 2,
          "image": "https://path/to/my/image/2.jpg"
      }
    ]
}
Run Code Online (Sandbox Code Playgroud)

然后:

$.getJSON(url, function(data) {
    var photos = data.photos;

    // `photos` now refers to the array of photos
});
Run Code Online (Sandbox Code Playgroud)