将打字稿对象转换为 json 字符串

turn typescript object into json string

我正在尝试在 typescript 中初始化一个对象,它需要一个 JSON 字符串作为 "options" 参数。准确的说是对象here。 options 参数必须是 JSON 字符串,而不是用于初始化 dijit 的对象。

有没有一种方法可以从打字稿对象创建 JSON 字符串,而无需手动操作?

请不要 link 任何未明确说明 "TypeScript" 的问题,因为此问题专门与 TypeScript 相关。虽然 JavaScript 的派生词与您编写代码的方式不同,因此这是目前唯一 post 问这个与 TypeScript 相关的问题。

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

您可以使用标准 JSON 对象,在 Javascript:

中可用
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, you can skip the JSON.stringify part with the writeJson 函数:

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

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