创建对象时如何处理丢失的 JSON 数据?(打字稿)

Big*_*iny 5 javascript json object typescript

我正在从 Google Places API 检索数据并将其直接转换为对象以供在其他地方使用。

问题是,有时响应不包含所有字段,因此当由于 JSON 响应中缺少字段而无法正确创建对象时,这会导致我的应用程序崩溃。

这是我正在谈论的一个例子:

例如,响应的格式是这样的:

{ "a" : "some_str", "b" : "some_str", "c" : "some_str" }
Run Code Online (Sandbox Code Playgroud)

但有时字段“b”会丢失,因此响应如下所示:

{ "a" : "some_str", "c" : "some_str" }
Run Code Online (Sandbox Code Playgroud)

当我尝试将 JSON 数据解析为对象时,如何解释这一点?

例如,这是我用来解析数据的代码:

this.http.get(URL).subscribe(details => {
    let detailsObj = details.json();
    let myObj: SomeObject = {
        "fieldA" : detailsObj.a,
        "fieldB" : detailsObj.b,
        "fieldC" : detailsObj.c,
    }
});
Run Code Online (Sandbox Code Playgroud)

如果 JSON 响应中不存在字段“b”,则“detailsObj”上的值将是未定义的,这会导致运行时错误,因为它试图创建具有未定义字段的对象。

尽管数据部分未定义,如何仍然创建对象?理想情况下,缺失的数据可以用空值填充。

任何正确方向的指示将不胜感激,感谢您的宝贵时间!

Dem*_*ian 3

缺失时用于||填写:nullb

"fieldB" : detailsObj.b || null,
Run Code Online (Sandbox Code Playgroud)

或者更加稳健并专门检查undefined

"fieldB" : detailsObj.b === undefined ? null : detailsObj.b,
Run Code Online (Sandbox Code Playgroud)

第一个选项更简洁,更易于阅读,但它会将值设置为nullif bis0false其他一些错误值。