2013-10-23 42 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"}]