使用 C# 反序列化 JSON
Deserialize JSON using C#
我正在尝试使用 Newtonsoft.Json
将此 JSON 字符串反序列化为 C# 中的不同对象
{"apple":{"title":"apple","color":"red"},"banana":{"title":"banana","color":"yellow"}}
注意本例中的 "apple" 和 "banana" 是动态值,因此很可能突然被称为其他名称,例如凤梨。
现在我要做的是反序列化这个 JSON 字符串,这样我可以在所有对象(Apple、Banana 等)中执行 foreach 循环以读取值color
字段。
但显然我做错了什么,这是我的代码。
dynamic d = JObject.Parse(jsonString);
foreach (dynamic e in d)
{
Console.WriteLine(e.title);
}
有谁知道为什么这不起作用?
尝试使用 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"];
希望对您有所帮助。
您想 e.Value.title
而不仅仅是 e.title
。
e
是一个 KeyValuePair<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);
}
我正在尝试使用 Newtonsoft.Json
{"apple":{"title":"apple","color":"red"},"banana":{"title":"banana","color":"yellow"}}
注意本例中的 "apple" 和 "banana" 是动态值,因此很可能突然被称为其他名称,例如凤梨。
现在我要做的是反序列化这个 JSON 字符串,这样我可以在所有对象(Apple、Banana 等)中执行 foreach 循环以读取值color
字段。
但显然我做错了什么,这是我的代码。
dynamic d = JObject.Parse(jsonString);
foreach (dynamic e in d)
{
Console.WriteLine(e.title);
}
有谁知道为什么这不起作用?
尝试使用 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"];
希望对您有所帮助。
您想 e.Value.title
而不仅仅是 e.title
。
e
是一个 KeyValuePair<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);
}