将typescript对象转换为json字符串

时间:2016-02-12 00:02:26

标签: javascript json typescript esri

我正在尝试初始化typescript中的对象,该对象需要“options”参数的JSON字符串。确切地说,它是对象here。 options参数必须是JSON字符串,而不是用于初始化dijit的对象。

有没有办法从typescript对象创建一个JSON字符串而不是一个手动过程?

请不要链接任何没有特别说“TypeScript”的问题,因为这个问题与TypeScript有关。虽然JavaScript的衍生物与编写代码的方式不同,因此这是唯一一个询问此问题当前与TypeScript有关的帖子。

5 个答案:

答案 0 :(得分:77)

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

答案 1 :(得分:4)

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

答案 4 :(得分: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)
})