将 TypeScript 对象转换为 JSON 字符串

问题描述 投票:0回答:5

我正在尝试在 TypeScript 中初始化一个对象,该对象需要

options
参数的 JSON 字符串。准确地说,它是这里的对象。 options 参数必须是 JSON 字符串,而不是用于初始化 dijit 的对象。

有没有一种方法可以从 TypeScript 对象创建 JSON 字符串,而无需手动过程?

javascript json typescript esri
5个回答
270
投票

只需使用

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


19
投票

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);


9
投票

您可以使用 JavaScript 中提供的标准 JSON 对象:

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

2
投票

使用这些 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));


0
投票

如果您使用 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)
})
© www.soinside.com 2019 - 2024. All rights reserved.