【问题标题】:Value of JSON object is an array [Typescript]JSON 对象的值是一个数组 [Typescript]
【发布时间】:2020-07-15 04:01:35
【问题描述】:

我有一组用 Excel 文件填充的数据。我想将数据倒入我的数据库中,我将文件导出为 csv 并将其解析为 JSON 对象。

fname,lname,phone
Terry,Doe,[123456789]
Jane,Doe,[123456788, 123456787]

通过将 csv 解析为 JSON 对象,毫不奇怪,我得到了 convertData 中引用的数组。

[
 {
   "fname": "Terry",
   "lname": "Doe",
   "phone": "[123456789]",
 },
 {
   "fname": "Jane",
   "lname": "Doe",
   "phone": "[123456788", 123456787]"
 }
]

我真正想要的是一个 JavaScript 对象,我可以像普通数组一样操作它,比如:

convertedData[0].phone[0]

如何做到这一点?

【问题讨论】:

标签: javascript arrays json typescript csv


【解决方案1】:

虽然您无法执行data[0].phone,但您可以执行data[0]["phone"] 之类的操作。

//You can replace this part with your CSV parsing - I put it this way so you could run and test it.
const rawData = "fname,lname,phone\nTerry,Doe,[123456789]\nJane,Doe,[123456788, 123456787]";
const lines = rawData.split("\n");

const data = [];
const keys = [];
lines[0].split(",").forEach((key) => keys.push(key));
for (let i = 1; i < lines.length; i++) {
    const line = lines[i];
    const parsedLine = {}
    line.split(",").forEach((value, index) => parsedLine[keys[index]] = value);
    data.push(parsedLine);
}

//print a test case
console.log(data[0]["phone"])

【讨论】:

  • data[0]["phone"] 返回一个字符串:“[123456789]”。我想要的是一个真正的数组,比如 [123456789]。
  • 从技术上讲,您可以运行eval(data[0]["phone"]),但请记住,这是非常危险,只能用于受信任的数据。 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
猜你喜欢
  • 1970-01-01
  • 2022-01-24
  • 2017-04-19
  • 2020-05-02
  • 1970-01-01
  • 2018-12-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-15
相关资源
最近更新 更多