【发布时间】:2018-01-16 15:46:44
【问题描述】:
我正在为 Angular 创建一个小模块,但我遇到了检查 JSON.parsed 数据是否正确的情况。
read(): Position|null {
try {
...
let parsedData = JSON.parse(data);
if (parsedData && parsedData.x && parsedData.y)
return new Position(parsedData.x, parsedData.y);
} catch (e) {
...
}
return null;
}
这对我来说似乎不是一个很好的解决方案,好像我之前字符串化的对象中有更多属性,然后我需要检查每个属性。我也不确定当解析的数据为null 时会发生什么。是否有任何其他解决方案来检查存储数据?谢谢
【问题讨论】:
-
这似乎是一个非常合理的解决方案。你到底关心什么?如果您正在解析的 JSON 有其他字段,则不会影响您在上面编写的逻辑。并且您将解析包装在一个 try-catch 中,它还应该处理任何格式错误的 JSON 案例。
-
我担心将来会更改存储在 JSON 中的对象。如果我需要更改对象并期望解析对象的更多属性,那么我需要检查每个属性是否已设置。我正在考虑检查已解析数据的实例,但它可能不起作用,因为当我将 Position 对象字符串化然后将其解析回来时,它不再是 Position 的实例,对吗?
-
如果你的 json 字符串已经是一个序列化的 Position 对象,你真的不需要做任何检查。您可以将 JSON.parse(data) 作为位置返回
-
这就是我想要的,谢谢。也许您应该考虑将其总结并为该问题做出答案,以便我将其标记为正确。再次感谢
标签: angular typescript if-statement conditional-statements javascript-objects