javascript - 创建对象时如何处理丢失的 JSON 数据? ( typescript )

标签 javascript json typescript object

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

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

这是我正在谈论的例子:

比如说响应的格式是这样的:

{ "a" : "some_str", "b" : "some_str", "c" : "some_str" }

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

{ "a" : "some_str", "c" : "some_str" }

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

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

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

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

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

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

最佳答案

使用||b缺失时填入null:

"fieldB" : detailsObj.b || null,

或者更健壮,专门检查undefined:

"fieldB" : detailsObj.b === undefined ? null : detailsObj.b,

第一个选项更简洁易读,但如果 b0,它会将值设置为 null >false 或其他一些错误的值。

关于javascript - 创建对象时如何处理丢失的 JSON 数据? ( typescript ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48395342/

相关文章:

菜单项的 JavaScript 旋转在单击后卡住

php - 如何解析 API 调用中的 JSON 数据?

json - Golang 运行时 : goroutine stack exceeds 1000000000-byte limit

javascript - Firestore where 语句与 array-contains 不起作用

reactjs - Material-ui-next typescript 错误

reactjs - 在 typescript 类中设置未定义的属性

javascript - 尝试使用 SipML5 api 和代码连接到 Freeswitch 时出现传输错误

javascript - 如何为 Telerik MVC [JQuery] 事件处理程序发送附加参数

javascript - Nodejs req Json 大小限制

javascript - 为什么我的模块函数在 Node.js 中返回未定义?