javascript - 无法使用 javascript 将嵌套 json 转换为平面 json

标签 javascript jquery json

我在嵌套 json 结构中有一个如下所示的动态 json

{
  "data": [
    {
      "_score": 0.5753642,
      "_type": "data",
      "_id": "686",
      "_source": {
        "mainData": "subset",
        "data": "vehicle",
        "name": "subset_vehicle",
        "fields": [
          "number",
          "id",
          "chasis"
        ],
        "dataset": "chasis"
      },
      "_index": "vehicle"
    },
   {
      "_score": 0.575,
      "_type": "data",
      "_id": "687",
      "_source": {
        "mainData": "subset1",
        "data": "vehicle1",
        "name": "subset_vehicle1",
        "fields": [
          "number",
          "id",
          "chasis"
        ],
        "dataset": "chasis1"
      },
      "_index": "vehicle"
    },
    {
      "_score": 0.57,
      "_type": "data",
      "_id": "686",
      "_source": {
        "mainData": "subset",
        "data": "vehicle",
        "name": "subset_vehicle",
        "fields": [
          "number",
          "id",
          "chasis"
        ],
        "dataset": "chasis"
      },
      "_index": "vehicle"
    }
  ]

}

我想将其转换为扁平 json 类型

{
    "_id": "686",
     "mainData": "subset",
    "data": "vehicle",
    "dataset": "chasis"
    "name": "subset_vehicle",
    "fields": [
      "number",
      "id",
      "chasis"
    ]
}

因此,当我根据该 id 单击前端侧的 id 时,特定对象必须像上面那样进行转换,我的意思是平面 json 。我习惯用下面的逻辑来转换

var flatArray = [];
var flatObject = {};

for (var index = 0; index < data.length; index++) {
  for (var prop in data[index]) {

    var value = data[index][prop];

    if (Array.isArray(value)) {
      for (var i = 0; i < value.length; i++) {
        for (var inProp in value[i]) {
          flatObject[inProp] = value[i][inProp];
        }
      }
    }else{
        flatObject[prop] = value;
    }
  }
  flatArray.push(flatObject);
}

console.log(flatArray);

但我无法转换它

最佳答案

您可以简单地使用 Array.flatMap()Array.map() 方法返回一个新数组。根据您的要求,两者都可以工作。 Array.flatMap() & Array.map()

var data = [{"_score":0.5753642,"_type":"data","_id":"686","_source":{"mainData":"subset","data":"vehicle","name":"subset_vehicle","fields":["number","id","chasis"],"dataset":"chasis"},"_index":"vehicle"},{"_score":0.575,"_type":"data","_id":"687","_source":{"mainData":"subset1","data":"vehicle1","name":"subset_vehicle1","fields":["number","id","chasis"],"dataset":"chasis1"},"_index":"vehicle"},{"_score":0.57,"_type":"data","_id":"686","_source":{"mainData":"subset","data":"vehicle","name":"subset_vehicle","fields":["number","id","chasis"],"dataset":"chasis"},"_index":"vehicle"}]

var a = data.flatMap(d => {
  d._source._id = d._id;
  return d._source;
})

console.log(a)

关于javascript - 无法使用 javascript 将嵌套 json 转换为平面 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57050443/

相关文章:

javascript - 如何根据每个客户端动态连接mysql数据库?

javascript - 使用jquery访问另一个类中的类

javascript - 从动画过渡?

java - 长字符串缺少 Spring post 请求参数

php - 从 SQL 查询创建 JSON 表

json - 如何使用 fetch 以 application/json 的内容类型发布

javascript - iOS 13 捕获(录音)停止后无法播放音频(Web Audio API)

javascript - 是否可以在具有本地数据的剑道网格中拥有完整的 CRUD 功能

javascript - 在测试环境中触发this.props.dispatch

c# - 如何使用 json.net 设置 json 路径的值