在typescript中有没有一种方法可以将字符串解析为JSON。
示例:在JS中,我们可以使用JSON.parse()
。在Typescript中有类似的功能吗?
我有一个JSON对象字符串,如下所示:
{"name": "Bob", "error": false}
您可以继续使用json.parse
,因为TS是一个JS超集。仍然存在一个问题:json.parse
返回any
,这破坏了类型安全。以下是两个更强类型的选项:
自定义类型保护是最简单的解决方案,通常足以进行外部数据验证:
// For example, you expect to parse a given value with `MyType` shape
type MyType = { name: string; description: string; }
// Validate this value with a custom type guard
function isMyType(o: any): o is MyType {
return "name" in o && "description" in o
}
围绕json.parse
创建一个泛型包装器,它接受一个类型保护作为输入,并返回解析的、类型化的值或错误结果:
const safeJsonParse = <T>(guard: (o: any) => o is T) =>
(text: string): ParseResult<T> => {
const parsed = JSON.parse(text)
return guard(parsed) ? { parsed, hasError: false } : { hasError: true }
}
type ParseResult<T> =
| { parsed: T; hasError: false; error?: undefined }
| { parsed?: undefined; hasError: true; error?: unknown }
const json = '{ "name": "Foo", "description": "Bar" }';
const result = safeJsonParse(isMyType)(json) // result: ParseResult<MyType>
if (result.hasError) {
console.log("error :/") // further error handling here
} else {
console.log(result.parsed.description) // result.parsed now has type `MyType`
}
SafeJsonParse
可能扩展为fail fast或try/catchjson.parse
错误。
如果需要验证许多不同的值,手动编写类型保护函数将变得非常麻烦。有一些库可以帮助完成这项任务--示例(没有全面的列表):
IO-TS
:具有FP-TS
对等依赖关系,使用函数式编程风格ZOD
:与IO-TS
typescript-is
:编译器API的TS转换器,需要额外的包装器,如ttypescripttypescript-json-schema
/ajv
:从类型创建JSON模式,并用ajv
问题内容: 有没有一种方法可以将Typescript中的字符串解析为JSON。 示例:在JS中,我们可以使用。Typescript中有类似的功能吗? 我有一个JSON对象字符串,如下所示: 问题答案: Typescript是javascript(的超集),因此您可以像在javascript中那样使用它: 只有在打字稿中,您才能对结果对象进行打字: (操场上的代码)
问题内容: 我正在从服务器获取JSON字符串,并且已经通过代码获取了JSON字符串。但是我不知道如何解析它。 以下是我的JSON字符串 请提供任何指导或代码段。 问题答案: 使用JSON类进行解析,例如
问题内容: 我正在尝试解析以下JSONString 这是我的代码: 有人可以帮忙,我的代码不起作用吗?我想解析标题,公司名称,类别等… 问题答案: 您需要从您的jsonstring 创建。 你有里面然后..
问题内容: 解析JSON似乎是这里讨论的一个相当普遍的话题。我环顾四周,但仍然找不到我想要的东西。这是我的HttpClient的代码 我正在使用HttpClient将JSON请求发送到服务器。然后,服务器以JSON返回响应。这很好。现在这是我遇到麻烦的地方。我从服务器接收到HttpEntity。然后,我将其变成看起来像这样的字符串。 我希望能够将此字符串发送到我的方法,并且它返回键值映射。我觉得这
问题内容: 我有一个要在Ruby中解析的字符串: 有没有一种简单的方法可以提取数据? 问题答案: 看起来像JavaScript Object Notation(JSON) 。您可以解析驻留在某个变量(例如)中的JSON ,如下所示: 如果您使用的是较旧的Ruby,则可能需要安装json gem。 还有其他针对JSON的JSON实现,可能更适合某些用例: Ruby的YAJL C绑定 JSON ::流
我正在尝试在java中解析JSON字符串以单独打印单个值。但是在运行程序时,我得到了以下错误- 我的班级看起来像- 让我知道我遗漏了什么,或者每次运行应用程序时都会出现错误的原因。如有任何意见,将不胜感激。