使用C#反序列化JSON

时间:2015-07-09 15:20:36

标签: c# json object deserialization

我正在尝试使用Newtonsoft.Json

将此JSON字符串反序列化为C#中的不同对象
{"apple":{"title":"apple","color":"red"},"banana":{"title":"banana","color":"yellow"}}

注意" apple"和"香蕉"在这个例子中是动态值,所以它很可能突然被称为其他的东西,例如凤梨。

现在我尝试做的是反序列化这个JSON字符串,我可以通过所有对象(Apple,Banana,...)进行foreach循环来读取{{1的值}} field。

但显然我做错了,这是我的代码。

color

有谁知道为什么这不起作用?

3 个答案:

答案 0 :(得分:4)

您想e.Value.title而非e.title

DotNetFiddle example here.

答案 1 :(得分:1)

eKeyValuePair<String,JToken>,因此我们需要访问e.Value才能获得title

var d = JObject.Parse(@"{""apple"":{""title"":""apple"",""color"":""red""},""banana"":{""title"":""banana"",""color"":""yellow""}}");

foreach (dynamic e in d)
{
    Console.WriteLine(e.Value.title);
}

此代码段适用于LinqPad。

答案 2 :(得分:0)

尝试使用System.Web.Script.Serialization然后执行以下操作:

var jss = new JavaScriptSerializer();
var dict = jss.Deserialize<Dictionary<string, dynamic>>(YOURJSON);

要使用此功能:

string item = dict["name"];
string itema = dict["item"]["thing"];

希望这有帮助。