【问题标题】:Large json, store two fields in an array大json,将两个字段存储在一个数组中
【发布时间】:2020-06-01 09:09:09
【问题描述】:

我有一个大型 json 文件,需要将“字段”合并到一个数组中才能存储到 firestore。

这里有一个屏幕截图来说明我的意思。我有什么:

我需要的:

如您所见,GRP1D 和 GRP2D 合并为一个数组。 json 有 15000 个条目,因此手动操作不是一种选择

【问题讨论】:

标签: javascript arrays json google-cloud-firestore


【解决方案1】:

您可以使用 NodeJS 编写脚本来编辑这个巨大的文件,类似于以下内容:

const largeJson = require('./largeJson.json');

// I am assuming here that the large JSON file is an array of objects
const mergedJson = largeJson.map(obj => {
    const objEditted = { ...obj, GRP1D: [ obj.GRP1D, obj.GRP2D ] };
    delete objEditted.GRP2D;  

    return objEditted;
});

// mergedJson now holds an array of objects which merge the fields 
// GRP1D and GRP2D as you described in the example

【讨论】:

  • 谢谢!但是,我在 json 文件中的该位置收到错误“意外的令牌:在位置 3320 的 JSON”,似乎没有任何问题。另外,在 largeJson.map 我应该只输入 json 文件的名称,对吗?它不会走这条路
  • 添加到上面的错误“at parse ()”也是消息的一部分
  • 以防万一,你能验证JSON文件here吗?
  • 错误是TypeError: largeJson.map is not a function
  • 如何让脚本直接更改大的 jason 文件,或者创建一个新文件?我尝试添加“mergedJson = require('mergedJson');mergedJson.writeFile('myjsonfile.json', json, 'utf8', callback)”但没有任何反应。并且“largeJson.map 不是函数”的错误仍然存​​在。
【解决方案2】:

这是使用扩展运算符的小代码 sn-p

const your_data = require("./your_data/ file/path");
const prepare_func = (your_data)=>{
  let temp = {...your_data,"GRP1D":[your_data["GRP1D"],your_data["GRP2D"]]};
  return temp;
}
let new_data = prepare_func(your_data);

【讨论】:

  • @landyandolt 是的
  • 在 {} 括号中,我是否将路径添加到我的文件?那真的行不通。我不必替换每个“your_data”,只需第一次定义您的数据即可。
  • 我已经编辑了代码,现在只需在此处添加您的文件路径 require("./your_data/file/path");
  • 谢谢!如何让它创建一个新文件或直接在 largejson fiie 中更改数据?我试过 "new_data = require('new_data'); new_data.writeFile('myjsonfile.json', json, 'utf8', callback)" 但什么也没发生
猜你喜欢
  • 2020-07-17
  • 1970-01-01
  • 2016-06-21
  • 2021-01-29
  • 1970-01-01
  • 2012-04-13
  • 2012-12-02
  • 2019-06-20
  • 2018-04-23
相关资源
最近更新 更多