在 Typescript 中将对象转换为 JSON
Convert an Object to a JSON in Typescript
在 TypeScript 中使用该JSON.stringify()
方法将对象转换为 JSON,例如const json = JSON.stringify(obj)
. 该JSON.stringify
方法接受一个值,将其转换为 JSON 字符串并返回结果。
索引.ts
// 👇️ const obj: {name: string; country: string;} const obj = { name: 'Tom', country: 'Chile' }; // ✅ Convert to JSON // 👇️ const json: string const json = JSON.stringify(obj); // ✅ Parse back to Object // 👇️ const parsed: any const parsed = JSON.parse(json);
我们使用
JSON.stringify
方法将对象转换为 JSON。
我们传递给方法的唯一参数是对象。
该JSON.stringify
方法返回一个字符串,其中包含对象的 JSON 表示形式。
索引.ts
// 👇️ const obj: {name: string; country: string;} const obj = { name: 'Tom', country: 'Chile' }; // 👇️ const json: string const json = JSON.stringify(obj); console.log(typeof json); // 👉️ "string"
如果需要将 JSON 字符串转换回对象,请使用JSON.parse()
方法。
如果您使用该JSON.parse
方法将 JSON 解析回对象,它将具有any
.
索引.ts
const obj = { name: 'Tom', country: 'Chile' }; // ✅ Convert to JSON // 👇️ const json: string const json = JSON.stringify(obj); // ✅ Parse back to Object // 👇️ const parsed: any const parsed = JSON.parse(json);
您可以使用
类型断言
将类型从更改为any
对象的类型。
索引.ts
// 👇️ const obj: {name: string; country: string;} const obj = { name: 'Tom', country: 'Chile' }; // ✅ Convert to JSON // 👇️ const json: string const json = JSON.stringify(obj); console.log(typeof json); // 👉️ "string" // ✅ Parse back to Object // 👇️ const parsed: {name: string; country: string;} const parsed = JSON.parse(json) as typeof obj;
现在parsed
变量已正确键入。
请注意undefined
,函数和Symbol
值不是有效的 JSON。如果您的对象包含其中任何一个,则在将对象转换为 JSON 字符串时它们将被忽略。
索引.ts
// 👇️ const obj: {id: symbol; name: undefined; age: () => number;} const obj = { id: Symbol('hello'), name: undefined, age: () => 5, }; // ✅ Convert to JSON // 👇️ const json: string const json = JSON.stringify(obj); console.log(json); // 👉️ {}
对象的所有键值对都没有转换为 JSON,因为它只包含 JSON 不兼容的值。
如果您要转换为 JSON 字符串的对象包含循环引用,您会得到一个TypeError: cyclic object value
.
索引.ts
const obj: { name: string; country: string; newName?: any } = { name: 'Tom', country: 'Chile', }; obj.newName = obj; // ⛔️ Error: Converting circular structure to JSON const json = JSON.stringify(obj);
因为我们分配了对象的属性来引用对象,所以我们创建了一个循环引用,它在转换为 JSON 时会抛出异常。