[英]accessing dictionary from a Json string in c#
我有一个 JSON 字符串作为服务器的响应,其中包含字典等键值对。 一些键也可以有字典作为它们的值。 我必须根据内部字典中的某些键访问值。 我怎样才能访问它们并存储在一个字符串中?
是这样的:-
string JsonData = "{\"status\":\"BAD_REQUEST\",\"code\":400,\"errorsCount\":1,\"errors\":[{\"desciption\":\"Field cannot be blank\"}]}";
string toBeAccessedValue = Field cannot be blank;
任何帮助,将不胜感激。
您可以使用[JsonExtensionData]
将您的 json 反序列化为类对象。
public class RootObject
{
[JsonExtensionData]
public Dictionary<string, JToken> data { get; set; }
}
你可以使用上面的类
RootObject ro = JsonConvert.DeserializeObject<RootObject>(JsonData);
var errors = ro.data["errors"].ToObject<JObject[]>();
string description = errors.FirstOrDefault().Property("desciption").Value?.ToString();
Console.WriteLine("description: " + description);
Console.ReadLine();
选择:
您可以使用下面的类结构来帮助您反序列化您的 json 并检索您想要的任何值。
public class Error
{
public string desciption { get; set; }
}
public class RootObject
{
public string status { get; set; }
public int code { get; set; }
public int errorsCount { get; set; }
public List<Error> errors { get; set; }
}
你可以使用上面的类结构来取消你的 json 之类的
RootObject rootObject = JsonConvert.DeserializeObject<RootObject>(JsonData);
string description = rootObject.errors.FirstOrDefault()?.desciption;
Console.WriteLine("description: " + description);
Console.ReadLine();
编辑:
如果你想用JavaScriptSerializer
反序列化你的 json。
JavaScriptSerializer serializer = new JavaScriptSerializer();
RootObject rootObject = serializer.Deserialize<RootObject>(JsonData);
string description = rootObject.errors.FirstOrDefault()?.desciption;
Console.WriteLine("description: " + description);
Console.ReadLine();
输出:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.