javascript - 将 JSON 子字符串推送/分配给相应的父字符串

标签 javascript arrays json object

我有一个从 API 生成的 JSON 字符串。

[{"categories":{"category":{"id":"1","Name":"furit"}}},{"categories":{"category":{"id":"2","Name":"veg"}}},{"products":{"product":{"id":"1","Name":"fruit"}}},{"products":{"product":{"id":"2","Name":"pears"}}}]

如何将所有子值推送给其父值,使其看起来像这样。

[{"categories":{"category":[{"id":"1","name":"fruit"},{"id":"2","name":"veg"}]}},{"products":{"products":[{"id":"1","name":"apple"},{"id":"2","name":"pears"}]}}]

谢谢。

更新的数据结构

最佳答案

您可以创建新对象并使用映射来更改数据结构并将该数据分配给新对象。

var data = [{"categories":{"category":{"id":"1","Name":"furit"}}},{"categories":{"category":{"id":"2","Name":"veg"}}}]
  
var r = {
  categories: {
    category: data.map(o => o.categories.category)
  }
}
console.log(r)

更新对于新的数据结构,您可以使用forEach()循环并添加到对象。

var data = [{"categories":{"category":{"id":"1","Name":"furit"}}},{"categories":{"category":{"id":"2","Name":"veg"}}},{"products":{"product":{"id":"1","Name":"fruit"}}},{"products":{"product":{"id":"2","Name":"pears"}}}]

var r = {categories: {category: []}, products: {product: []}}
data.forEach(function(e) {
  if(e.categories) r.categories.category.push(e.categories.category)
  if(e.products) r.products.product.push(e.products.product)
})

console.log(r)

关于javascript - 将 JSON 子字符串推送/分配给相应的父字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46326031/

相关文章:

javascript - 当我执行 loc.innerHTML = xhr.responseText 时,为什么浏览器会自动将我的responseText 用双引号引起来?

javascript - 为什么动态值不会以这种形式打印?

arrays - 尝试使用 PostgreSQL 在 Rails 4 中创建 json 对象数组时出错

javascript - 使用 Array.prototype.findIndex() 查找对象

javascript - VueJS 资源重新加载内容

arrays - 如何在 Kotlin 中将对象转换为字节数组

python - python函数代码输出错误

javascript - 通过ajax接收php数据作为数组而不是我的javascript中的responseText

java - jqGrid不显示来自java的Json数据

python - 将 pandas DataFrame 转换为 JSON 字符串列表