2013-05-09 71 views
0

將json字符串解析爲對象時出現錯誤。我使用system.json來解析json字符串。JSON使用System.Json解析異常

JSON文件:(注意:因爲它是生成我不能改變此JSON文件的結構)

{ 
    title: "My Title", 
    log: "",      
    nid: "1234", 
    type: "software", 
    language: "EN", 
    created: "1364480345", 
    revision_timestamp: "1366803957", 
    body: {     
     und: [ 
       { 
        value: "abc", 
        summary: "def" 
       } 
     ] 
    } 
} 

C#代碼:

string jsonString = new WebClient().DownloadString(".......MyJson.json"); //For test purpose 

var obj = JsonObject.Parse (jsonString); ///<--- At this line the exception is thrown 

除外:

System.ArgumentException has been thrown. 
Invalid JSON string literal format. At line 1, column 2 

如何解決這個問題?

在此先感謝!

+1

我希望它是抱怨,因爲這不是有效的JSON。這些對象屬性必須用引號括起來:'title:「我的標題」'應該是'「標題」:「我的標題」'。如果你不能更改文件,我想也許Newtonsoft的JSON.Net可以處理這種格式,但我不確定;我沒有真正嘗試過。 – 2013-05-09 18:13:32

+0

@ChrisNielsen我相信json.NET也會拋出這一點。 – evanmcdonnal 2013-05-09 18:14:50

回答

1

如何解決這個問題?

(注:因爲它產生的,我不能改變這個JSON文件的結構)

簡單,使用json.Net。它的工作沒有任何問題與您的JSON

var j = JObject.Parse(jsonString); 

你甚至可以使用關鍵字dynamic

dynamic j = JObject.Parse(jsonString); 

Console.WriteLine("{0},{1}", j.title, j.body.und[0].value); 
2

你不能。這是無效的JSON。字段名稱必須用引號引起來。所有json解析工具在嘗試解析時都會拋出。

您可以在反序列化之前處理它並將其變爲有效的json,但實際上,您需要糾正它的API端。沒有客戶會使用它。