有没有一种方法可以将一个对象进行JSON.stringify并使其';s类型是JSON吗?
如果我这样做:有没有一种方法可以将一个对象进行JSON.stringify并使其';s类型是JSON吗?,json,typescript,Json,Typescript,如果我这样做: import { MyType } from 'somewhere'; class MyClass { myObj: MyType = new MyType(); updateObject(newVal: string): void { myObj.thing = newVal; this.saveStuff(JSON.stringify(myObj)); } saveStuff(json: JSON): vo
import { MyType } from 'somewhere';
class MyClass {
myObj: MyType = new MyType();
updateObject(newVal: string): void {
myObj.thing = newVal;
this.saveStuff(JSON.stringify(myObj));
}
saveStuff(json: JSON): void {
// http request...
}
}
我得到一个错误,我传递的是一个字符串,而不是JSON。(我知道我实际上是在传递一个字符串)我如何使它将字符串作为JSON
我尝试将字符串转换为JSON,即:
JSON.stringify(foo)转换为JSON
或JSON.stringify(foo)
。但是我得到了一个“类型'string'不能转换为类型'JSON.”双向错误。JSON
不是类型。当您通过调用JSON.parse(str)
解析字符串时,您得到的是一个对象文本
在代码中,当您调用JSON.stringify(foo)
时,您正在将对象文本foo
转换为字符串
因此,您的saveStuff()
会收到一个字符串
JSON代表JavaScript对象表示法。它只是一个关于如何表示对象的规范。您对TypeScript类型注释所做的是宣布您期望值的类型(您不声明类型)。通常情况下,您会设置一个类型注释,当您运行代码时,您会发现实际的类型是其他类型 在这种情况下,尽管TS编译器可以预先计算类型。它知道
JSON.stringify
返回一个string
。由于您对saveStuff
方法进行了注释,以接受JSON
对象,因此类型不匹配将导致编译器错误
无论其内容如何,
字符串
仍然是字符串
。它可能包含JSON、XML或一首诗。它仍然只是一个字符串
。JSON
类只是一个实用程序类,它为您提供了一种将JavaScript对象
序列化和反序列化到字符串
(包含JSON内容)和从字符串
)的方法。您想用它实现什么?比如:为什么不把它标记为string(毕竟它是一个string)?我想准确地设置所有东西的打字方式。我可以将它设置为字符串,但它实际上是JSON,所以我希望它在代码中被视为JSON。它实际上不是JSON,而是字符串。您使用的是JSON类的静态方法,其结果是字符串。因此名为stringify
。正如我在问题中所说,“我知道我实际上在传递一个字符串”。但是,JSON字面上是一个字符串。JSON是一种内容格式。不要将其与JSON
类混淆。正如我几年前发布的关于这个问题的回答/评论中所述:JSON是一个字符串。