我正在从 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,
第一个选项更简洁易读,但如果 b
为 0
或 ,它会将值设置为
或其他一些错误的值。null
>false
关于javascript - 创建对象时如何处理丢失的 JSON 数据? ( typescript ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48395342/