2013-10-23 50 views
0

我已經得到了一個Json字符串來解析這個對象數組,這比一個簡單的字符串長得多,這讓我覺得我在格式化上做錯了什麼。解析一個簡單的Json字符串

這裏是一個字一個字就是我們web服務的JSON字符串輸出:

{"news":"What is Legal/Awesome Dre"} 

,第一部分是簡單的東西我命名的應用程序(新聞)的字符串,第二個部分是字符串將會隨着歌曲的變化而改變,這就是爲什麼我想要拉一串簡單的字符串。

當我跑我得到這些線分析錯誤的應用:

Console.Out.Writeline (content); 

news = JsonConvert.DeserializeObject(content); 

應用輸出將顯示JSON字符串,因爲它是在網站上,但我得到的是之後的錯誤告訴我無效令牌:startPath ...上次意味着我的Json字符串格式錯誤,因爲我需要獲取數據。 任何人都可以幫助我嗎?

(PS我使用C#在Xamarin工作室(單聲道爲Android)的工作,如果有什麼差別)

+0

什麼是新聞的類型,你想分配反序列化的值?它是動態的嗎? – MichaC

回答

0

的問題是,你的序列化的JSON對象不是一個字符串,它是一個你想要的字符串值在"news"屬性/鍵/名稱的對象。這是一個簡單的方法來獲取字符串:

dynamic jsonObj = JsonConvert.DeserializeObject(content); 
string news = jsonObj.news; 

或者你可以使用匿名類型:

var jsonObj = JsonConvert.DeserializeAnonymousType(content, new { news = "" }); 
string news = jsonObj.news; 

或者創建一個string News屬性類型:

MyNewsType jsonObj = JsonConvert.DeserializeObject<MyNewsType>(content); 
string news = jsonObj.News; 

這些都以下列方式工作:

var content = @"{""news"":""What is Legal/Awesome Dre""}"; 
// above code 
Console.WriteLine(news); // prints "What is Legal/Awesome Dre" 
+0

謝謝你,上面的選項就像一個魅力,具體如下: var jsonObj = JsonConvert.DeserializeAnonymousType(content,new {news =「」}); string news = jsonObj.news; 只是後續問題,但這基本上只是創建一個Json對象,將我的字符串存儲在對象「.news」屬性中,然後將我創建的字符串設置爲等於「.news」屬性的內容? – Klutch

+0

它更準確地說它創建了一個匿名類型的對象,而不是Json對象。我只是把它叫做'jsonObj',因爲我想不出一個更好的名字。你說的其餘部分是正確的。 –

1

儘量放在方括號中的JSON:

[{"news":"What is Legal/Awesome Dre"}]