首页 > 解决方案 > 如何用父对象或字段包装 JSON 对象?

问题描述

我需要将调用的 JSON 字符串的格式转换为filter_by_address如下final output所示:

{
  "input": {
    "citybooks": [
      {
        "city": "Moss Beach",
      },
      {
        "city": "Half Moon Bay",
      }
    ]
  }
}

我目前所做的是下面的代码:

var filtered = '[{"author":"Ernest Hemingway","title":"Snow White","address":"Sydney","link":{"url":"https://www.loremipsum.com"},"booktype":{"type":"Science Fiction"}},{"author":"J.K. Rowling","title":"Harry Potter","address":"Sydney","link":{"url":"https://www.loremipsum.com"},"booktype":{"type":"Textbook"}}]';
var books_data_array = JSON.parse(filtered);
var new_objects = [];

//console.log(books_data_array);

for (var i = 0; i < books_data_array.length; i++) {
  //console.log(books_data_array[i]["author"]);

  var new_object = {
    "citybooks": [{
      "city": "address",
    }]
  }

  new_objects.push(new_object);

}

console.log(new_objects);

我的代码仍然缺少一些东西。citybooks我需要将field返回的所有对象包装在一个"input".

标签: javascriptjqueryhtmlreactjs

解决方案


您可以使用map遍历数组并构造所需的结构。

var filtered = '[{"author":"Ernest Hemingway","title":"Snow White","address":"Sydney","link":{"url":"https://www.loremipsum.com"},"booktype":{"type":"Science Fiction"}},{"author":"J.K. Rowling","title":"Harry Potter","address":"Sydney","link":{"url":"https://www.loremipsum.com"},"booktype":{"type":"Textbook"}}]';
var books_data_array = JSON.parse(filtered);

var new_objects = {
  input: {
    citybooks: books_data_array.map(o => ({city: o.address})),
  }
}

console.log(new_objects);


推荐阅读