【问题标题】:How can I wrap JSON object with a parent object or field?如何用父对象或字段包装 JSON 对象?
【发布时间】:2019-09-17 02:59:49
【问题描述】:

我需要将名为filter_by_address 的JSON 字符串的格式转换为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 字段返回的所有对象包装在"input" 中。

【问题讨论】:

  • 对不起,我有点困惑,您期望的输出是什么?
  • @German 查找上面的final output 字。这就是我期待的输出
  • 谢谢,我建议使用reduce,它是一个很棒的数组函数,类似于map。

标签: javascript jquery html reactjs


【解决方案1】:

您可以使用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);

【讨论】:

    【解决方案2】:

    您也可以尝试使用 reduce,但这取决于您。

      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"}}]';
      const books_data_array = JSON.parse(filtered);
      var new_objects = [];
    
    const filtered = books_data_array.reduce((cur, acc) => {
        const currEl = cur['input'].cityBooks;
        const addr = acc.address;
        const res = [...currEl, addr];
        return {input: {cityBooks: res}}
    }, {input: {cityBooks:[]}})
    
    console.log(filtered);
    

    【讨论】:

      猜你喜欢
      • 2016-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-18
      相关资源
      最近更新 更多