簡體   English   中英

將 typescript 對象轉換為 json 字符串

[英]turn typescript object into json string

我正在嘗試在打字稿中初始化一個對象,它需要一個 JSON 字符串作為“選項”參數。 准確的說是 這里的對象。 options 參數必須是 JSON 字符串,而不是用於初始化 dijit 的對象。

有沒有辦法從打字稿對象創建 JSON 字符串而不需要手動處理?

請不要鏈接任何沒有特別提到“TypeScript”的問題,因為這個問題特別與 TypeScript 相關。 雖然是 JavaScript 的衍生物,但你編寫代碼的方式是不同的,因此這是目前唯一一個與 TypeScript 相關的問題。

只需使用JSON.stringify(object) 它內置於 Javascript 中,因此也可以在 Typescript 中使用。

您可以使用 Javascript 中可用的標准 JSON 對象:

var a: any = {};
a.x = 10;
a.y='hello';
var jsonString = JSON.stringify(a);

TS 被編譯成 JS,然后執行。 因此,您可以訪問 JS 運行時中的所有對象。 這些對象之一是JSON對象。 這包含以下方法:

  • JSON.parse()方法解析 JSON 字符串,構造字符串描述的 JavaScript 值或對象。
  • JSON.stringify()方法將 JavaScript 對象或值轉換為 JSON 字符串。

例子:

 const jsonString = '{"employee":{ "name":"John", "age":30, "city":"New York" }}'; const JSobj = JSON.parse(jsonString); console.log(JSobj); console.log(typeof JSobj); const JSON_string = JSON.stringify(JSobj); console.log(JSON_string); console.log(typeof JSON_string);

使用這些 JSON.(parse/stringify) 方法時要小心。 我對復雜的對象做了同樣的事情,結果發現包含更多對象的嵌入數組對於我正在序列化的對象樹中的所有其他實體具有相同的值。

const temp = [];
const t = {
    name: "name",
    etc: [
        {
            a: 0,
        },
    ],
};
for (let i = 0; i < 3; i++) {
    const bla = Object.assign({}, t);
    bla.name = bla.name + i;
    bla.etc[0].a = i;
    temp.push(bla);
}

console.log(JSON.stringify(temp));

如果您使用fs-extra ,則可以使用writeJson函數跳過JSON.stringify部分:

const fsExtra = require('fs-extra');

fsExtra.writeJson('./package.json', {name: 'fs-extra'})
.then(() => {
  console.log('success!')
})
.catch(err => {
  console.error(err)
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM