Are there any means for JSON serialization/deserialization of Typescript objects so that they don't loose type information? Simple JSON.parse(JSON.stringify) has too many caveats.

Or I should use adhoc solutions?

推荐答案

Use Interfaces to get strong types:

// Creating 
var foo:any = {};
foo.x = 3;
foo.y='123';

var jsonString = JSON.stringify(foo);
alert(jsonString);


// Reading
interface Bar{
    x:number;
    y?:string; 
}

var baz:Bar = JSON.parse(jsonString);
alert(baz.y);

And use type assertion "<>" if you need to.

Json相关问答推荐

如何在生产环境中更改 Flutter 应用程序中的数据模型?

当值包含ansible中的字符串时解析json值

在 Perl Mojolicious 中呈现 JSON 时防止转义字符

PowerShell - 如何迭代 PSCustomObject 嵌套对象?

hook到 Decodable.init() 以获得未指定的键?

使用适用于 Python 的 Google API - 我从哪里获取 client_secrets.json 文件?

MySQL 选择 JSON 字段属性具有值的位置

如何使用 jq 将字符串转换为 JSON 文件中的整数?

将 JSON 导出到环境变量

对 kotlin 数据类使用 Jackson @JsonProperty 注释

在 VS Code 中,禁用错误“JSON 中不允许评论”

pandas.io.json.json_normalize 带有非常嵌套的 json

JSON.stringify (Javascript) 和 json.dumps (Python) 在列表中不等效?

在 bash 中将 CSV 转换为 JSON

无法将空值放入 JSON 对象

使用 GSON 来自 Json 的 Kotlin 数据类

分配给单个属性的多个 JsonProperty 名称

按键值过滤 JSON

使用电源查询的 Json excel

在 React 中访问子级的父级状态