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; 
    } 
}