2016-04-25 68 views
3

在我的C#項目中,我有機會反序列化可能不正確的JSON。因此,錯誤是可能的。目前,我正在將它封裝在try塊中,並通過返回null來捕獲異常。這是有效的,但告訴圖書館不要在第一時間拋出異常會更好。那可能嗎?解析JSON時不會拋出異常錯誤?

我當前的代碼:

public static NodeModel FromJsonString(string json) 
{ 
    NodeModel r = null; 
    JsonConverter converter = JsonConverters.ReferenceHierarchyCreation; 
    try 
    { 
    r = JsonConvert.DeserializeObject<NodeModel>(json, converter); 
    } 
    catch 
    { 
    } 
    return r; 
} 
+0

如果您通過了參數,你會怎麼告訴無效JSON並返回'null'之間的差異進行有效的JSON字符串(即,如果它試圖deserialise'「空」')?現在你所做的可能是你能做的最好的,因爲它在你的圖層中,你可以做出決定:「null」和「this:」不是,有效的[json'應該被視爲相同。 –

回答

3

,但它會更好告訴庫不是拋出一個異常在 首位

有沒有TryParse組方法與JSON解析。你現在有什麼可能是你可以做的。

另一種選擇是,以validate your JSON against a Schema,只有解析,如果JSON是有效的。

只需添加,唯一的辦法就是捕獲實際異常並將其記錄在某處,但如果您只關心解析和忽略異常,那麼您的解決方案就足夠了。