我正在尝试使用Newtonsoft.Json
{"apple":{"title":"apple","color":"red"},"banana":{"title":"banana","color":"yellow"}}
注意" apple"和"香蕉"在这个例子中是动态值,所以它很可能突然被称为其他的东西,例如凤梨。
现在我尝试做的是反序列化这个JSON字符串,我可以通过所有对象(Apple,Banana,...)进行foreach循环来读取{{1的值}} field。
但显然我做错了,这是我的代码。
color
有谁知道为什么这不起作用?
答案 0 :(得分:4)
您想e.Value.title
而非e.title
。
答案 1 :(得分:1)
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);
}
此代码段适用于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"];
希望这有帮助。