[英]How to write an js object into a json-file
現在我想這樣寫:
myJSON表
在 JSON 文件中,我有以下方法:
fs.writeFile('./users.json', JSON.stringify(myJSONtable, null, 4), 'utf-8', function (err) {
if (err) throw err
console.log('Done!')
})
我不得不說我不確定“fs.writeFile”是否是正確的方法。
我的 Json 文件應如下所示:
{
"Startordner": [
"C:/GIT/Aktuell/zipper/startordner/"
],
"Speicherorte": [
"C:/GIT/Aktuell/zipper/zielordner/"
],
"Ignore": [
"STM32F030RC",
"Dateinamensliste"
],
"Satz": [
{
"Ursprungsdateien": "placeholder1",
"NeuerName": "placeholder1",
"Revision": "05"
},
{
"Ursprungsdateien": "placeholder2",
"NeuerName": "placeholder2",
"Revision": "04"
},
{
"Ursprungsdateien": "placeholder3",
"NeuerName": "placeholder3",
"Revision": "02"
},
{
"Ursprungsdateien": "placeholder4",
"NeuerName": "placeholder4",
"Revision": "02"
}
]
}
但我只在這里得到這個:
[]
myJSONtable 看起來像這樣:
[Startordner: Array(1), Zielordner: Array(1), Ignore: Array(1), Satz: Array(12)]
Ignore: Array(1)
0: {Ignore: Array(2)}
length: 1
__proto__: Array(0)
Satz: Array(12)
0: {Ursprungsdateien: "placeholder1"}
1: {NeuerName: "placeholder1"}
2: {Revision: "05"}
3: {Ursprungsdateien: "placeholder2"}
4: {NeuerName: "placeholder2"}
5: {Revision: "04"}
6: {Ursprungsdateien: "placeholder3"}
7: {NeuerName: "placeholder3"}
8: {Revision: "02"}
9: {Ursprungsdateien: "placeholder4"}
10: {NeuerName: "placeholder4"}
11: {Revision: "02"}
length: 12
__proto__: Array(0)
Startordner: [{…}]
Zielordner: Array(1)
0: {Zielordner: Array(1)}
length: 1
__proto__: Array(0)
length: 0
__proto__: Array(0)
我仍然可以得到幫助,在此先感謝。
myJSONtable 變量很可能是帶有 class 和getters項的數組。 它們在 JSON.stringify() output 中不可見。
您可以在該 class 中編寫自己的序列化方法,您將在其中手動返回 object ,其中手動調用每個字段的值或使用一些專用庫,如class-transformer :
import { classToPlain, Expose } from "class-transformer";
class Satz {
constructor(ursprungsdateien, neuerName, revision) {
this.ursprungsdateien = ursprungsdateien;
this.neuerName = neuerName;
this.revision = revision;
}
}
const item1 = new Satz("placeholder1", "placeholder1", "05");
const item2 = new Satz("placeholder2", "placeholder2", "06");
class SomeClass {
@Expose()
get startordner() {
return "C:/GIT/Aktuell/zipper/startordner/";
}
@Expose()
get speicherorte() {
return "C:/GIT/Aktuell/zipper/zielordner/";
}
@Expose()
get ignore() {
return ["STM32F030RC", "Dateinamensliste"];
}
@Expose()
get satz() {
return [item1, item2];
}
}
const someClass = [new SomeClass()];
// this returns only [{}]
console.log(JSON.stringify(someClass, null, 4));
const someClassPlain = classToPlain(someClass);
// this returns all getters
console.log(JSON.stringify(someClassPlain, null, 4));
默認情況下,庫會忽略 getter,但您可以使用 Expose 裝飾器強制它們在序列化后可見。 如果你不能在你的項目中使用裝飾器,回退總是編寫你自己的序列化方法。
這是 stackblitz 鏈接: https://stackblitz.com/edit/stackoverflow-66238400?file=index.js
我在別處尋找解決方案並找到了它。 我的問題只是我填充了一個數組,解決方案非常簡單,我只需要填充一個 object ,為此我只是將聲明 dof myJSONtable 更改為。
var myJSONtable = {};
盡管如此,還是感謝您的幫助。 抱歉打擾了,我希望其他人可以解決我的問題和以下答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.