在写入和读取 JSON 后将 JS 数组附加到 JSON

Posted

技术标签:

【中文标题】在写入和读取 JSON 后将 JS 数组附加到 JSON【英文标题】:Appending a JS array to JSON after writing to and reading the JSON 【发布时间】:2019-10-08 16:45:32 【问题描述】:

我正在尝试将数据保存到 JSON 文件,第一次保存正常,第二次保存破坏了 JSON。这是我的数组的样子(例如简化):

var myArray1 = new Array (
  Ex1 : "Ex1",
  Ex2 : "Ex2",
  Ex3 : "Ex3"
);

我将它保存为 JSON,它返回有效的 json,我读取它并尝试在这个数组之上保存另一个这样的数组:

var myArray2 = new Array (
  Ex4 : "Ex4",
  Ex5 : "Ex5",
  Ex6 : "Ex6"
);

我尝试使用 concat 在 Chrome 控制台中创建它:

0:
  Ex1: "Ex1"
  Ex2: "Ex2"
  Ex3: "Ex3"
  __proto__: Object
1:
  Ex4: "Ex4"
  Ex5: "Ex5"
  Ex6: "Ex6"
  __proto__: Object
length: 2
__proto__: Array(0)

我假设现在使用 JSON.stringify 会使它成为有效的 JSON,但是当我将它保存到 JSON 时,它给了我这个:

[
    "chosenDate": "May_2019_1",
    "shiftName": "Test 1",
    "startTime": "00:00",
    "endTime": "01:00",
    "payPerHour": "1.00"
]
[
    "chosenDate": "May_2019_16",
    "shiftName": "Test 2",
    "startTime": "01:00",
    "endTime": "02:00",
    "payPerHour": "2.00"
]

第一个 JSON 在第一个“]”之前是完全相同的,所以 concat 最终什么也没做?我该如何解决这个问题才能生成有效的 JSON?

我不知道它是否会改变任何东西,但我正在尝试制作一个 ionicv1 应用程序,使用 cordova-file-plugin 来保存 JSON。

编辑: 所以我不确定为什么,但是当尝试在 Chrome 中使用我的示例时它可以工作,但是当通过我的应用程序运行它时,实际上将它放在一个文件中并从文件中读取它会返回损坏的 JSON。流程是:

创建第一个数组。 将其字符串化并写入 json 文件。 读取文件并解析 json。 创建第二个数组。 连接数组。 字符串化并写入 json。

并且该文件具有损坏的 JSON。我猜在写它或读东西的地方不太对劲,也将它与可能的重复帖子区分开来。

【问题讨论】:

write/add data in JSON file using node.js的可能重复 JSON 文件很难追加(应该读取整个文件,然后解析,然后重写)。我建议改用JSONL - 一种几乎与 JSON 一样易于使用的格式。 【参考方案1】:

您的陈述:

var myArray1 = new Array (
  Ex1 : "Ex1",
  Ex2 : "Ex2",
  Ex3 : "Ex3"
);

创建一个包含一个对象的数组,然后执行两次,因此得到两个数组,每个数组包含 1 个对象。

您必须创建第一个数组,然后继续向它推送。

var myArray1 = new Array(
  Ex1 : "Ex1",
  Ex2 : "Ex2",
  Ex3 : "Ex3"
);

myArray1.push(
  Ex4: "Ex4",
  Ex5: "Ex5",
  Ex6: "Ex6"
)

console.log(myArray1)

【讨论】:

这给了我同样的结果 @anurag 你错过了 ',' 在值之后 kevin 检查现在【参考方案2】:

好的,从你的代码来看应该是这样的:

const myArray1 = new Array (
    Ex1 : "Ex1",
    Ex2 : "Ex2",
    Ex3 : "Ex3"
);

const myArray2 = new Array (
    Ex4 : "Ex4",
    Ex5 : "Ex5",
    Ex6 : "Ex6"
);

const mergedArray = myArray1.concat(myArray2);
// Merged array is now:
// 0:
//  Ex1: "Ex1"
//  Ex2: "Ex2"
//  Ex3: "Ex3"
//  __proto__: Object
// 1:
//  Ex4: "Ex4"
//  Ex5: "Ex5"
//  Ex6: "Ex6"

JSON.stringify(mergedArray, null, 4);

// Returns formatted JSON.
// "[
//     
//         "Ex1": "Ex1",
//         "Ex2": "Ex2",
//         "Ex3": "Ex3"
//     ,
//     
//         "Ex4": "Ex4",
//         "Ex5": "Ex5",
//         "Ex6": "Ex6"
//     
// ]"

我在 Chrome 控制台中尝试过 - 它返回有效的 JSON。 检查可能与您正在做的事情不同的地方。

【讨论】:

以上是关于在写入和读取 JSON 后将 JS 数组附加到 JSON的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有数组的情况下附加到 JSON?

附加 JSON 数据 Swift

单击按钮后将名称附加到数组,然后将其发送到另一个视图控制器

js能把数据写入到json文件中吗

将json数据写入和读取到内部存储android

如何从 React.js 读取和写入本地 JSON 文件?