1

我正在为angular创建一个小模块,并且我遇到了检查我的JSON.parsed数据(如果它们正确)的情况。正确验证TypeScript中的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时会发生什么。是否有任何其他解决方案来检查特定数据?由于

+0

这似乎是一个非常合理的解决方案。你关心什么?如果你正在解析的JSON有其他字段,它不会影响你上面写的逻辑。而且你将解析包装在一个try-catch中,它也应该处理任何格式不正确的JSON情况。 – Sal

+0

我很担心未来会更改以JSON存储的对象。如果我需要更改对象并期望解析对象具有更多属性,那么我需要检查每个属性是否已设置。我正在考虑检查分析数据的实例,但它可能不起作用,因为当我将Position对象字符串化,然后解析它不再是Position的实例时,我是对的吗? –

+0

如果你的json字符串已经是一个序列化的Position对象,你实际上不需要做任何检查。您可以**返回JSON.parse(数据)作为位置** – Sal

回答

0

正如在评论中讨论,你想要的是:

read(): Position|null { 
    try { 
     return JSON.parse(data) as Position; 
    } catch (e) { 
     return null; 
    } 
}