我有以下JArray对象(newtonsoft.json)
[ { "Administrator": 3 }, { "User": 1 }, { "Guest": 5 } ]
如何检索键“Administrator”的值(3)?它要求我输入数组索引,但我希望按键检索,因为该列表可以扩展和收缩。
64jmpszr1#
使用Json.Net,您可以简单地执行以下操作
int value = (int)JArray.Parse(json).Children()["Administrator"].First();
j13ufse22#
string json = @"[ { ""Administrator"": 3 }, { ""User"": 1 }, { ""Guest"": 5 } ]"; JArray jsonObject = JsonConvert.DeserializeObject<JArray>(json); var adminVal = jsonObject[0]["Administrator"].Value<int>();
就像评论中说的JSON是无效的。这里是修复的版本以及如何取Administrator的值。
JSON
Administrator
下面介绍如何在不指定JArray索引的情况下执行此操作。
var adminObject = jsonObject.Children<JObject>().FirstOrDefault(x=>x.Children<JProperty>().Any(y=>y.Name == "Administrator")); var adminObjectValue = adminObject.GetValue("Administrator");
tnkciper3#
首先可以使用Json.NET将Json读取为字典列表,然后通过linq合并它们:
Json.NET
var json = @"[ { ""Administrator"": 3 }, { ""User"": 1 }, { ""Guest"": 5 } ]"; var list = JsonConvert.DeserializeObject<List<Dictionary<string, int>>>(json); var dict = list.SelectMany(d => d).ToDictionary(p => p.Key, p => p.Value); var adminId = dict["Administrator"];
vlju58qv4#
你的杰森应该是。
[{ "Administrator": 3 }, { "User": 1 }, { "Guest": 5 }]
您可以使用NewtonSoft.Json dll将此json反序列化为以下类,并通过类对象获取Administrator的值。
public class ClassName { public int Administrator { get; set; } public int? User { get; set; } public int? Guest { get; set; } }
将json反串行化为类对象的代码。
ClassName obj = JsonConvert.DeserializeObject<ClassName>(json); //obj.Administrator get or set it according to your requirement.
4条答案
按热度按时间64jmpszr1#
使用Json.Net,您可以简单地执行以下操作
j13ufse22#
就像评论中说的
JSON
是无效的。这里是修复的版本以及如何取Administrator
的值。下面介绍如何在不指定JArray索引的情况下执行此操作。
tnkciper3#
首先可以使用
Json.NET
将Json读取为字典列表,然后通过linq合并它们:vlju58qv4#
你的杰森应该是。
您可以使用NewtonSoft.Json dll将此json反序列化为以下类,并通过类对象获取Administrator的值。
将json反串行化为类对象的代码。