2016-05-18 80 views
1

我有一個JSON字符串是這樣的:如何以空白字段反序列化json?

[{ 
     "_id": "abcd", 
     "name": "bender rodriguez", 
     "meta": { 
     "location": {} 
     }, 
     dob": , 
} 
] 

DOB後的部分炸燬:

return new JavaScriptSerializer().Deserialize<T>(json); 

的問題是空DOB。我似乎無法找到任何方法來處理這樣的事情。這似乎不是一個常見問題?我對json的反序列化不太熟悉,除了string.replace(": ,"," : null,")之外,還有哪些方法可以用來處理這個問題?

+0

當您的代碼段格式正確時,丟失的報價Marco提及更爲明顯。 –

+0

JSON從哪裏來?它目前不適用於空值。 – Steve

+0

你確定你錯過了'dob'的主要引用:'line?or是否是一個錯字? – dbc

回答

1

您使用的JSON反序列化器是正常的,您試圖反序列化的JSON是錯誤的,它缺少一個值,以及dob屬性的最初雙引號。使用JSONLint來驗證JSON。 如果JSON是從自己控制的組件來了,然後用JSON serializer序列化得當,如果沒有,則可以使用此解決特定的問題:

string myJson = "[{ \"_id\": \"abcd\", \"name\": \"bender rodriguez\", \"meta\": { \"location\": {} }, dob\": , } ]"; 

JavaScriptSerializer().Deserialize(myJson.Replace("dob\": ", "\"dob\": \"\"")); 

但是,如果數據的變化,是它讓具有無效的JSON格式,您幾乎無法做到這一點,但詢問是否執行該組件向您發送有效的JSON數據。