如何反序列化特定 Json

How to deserialize specific Json

大家好,我尝试反序列化一个 json,但结果为空,可能很简单,但我现在无法解决,我尝试使用这种形式,我使用 Newtonsoft

if (response.Content.Contains("error"))
{
    JObject jObject = JObject.Parse(response.Content);
    dynamic x = JsonConvert.DeserializeObject<Error>(response.Content);
    error = JsonConvert.DeserializeObject<Error>(response.Content);
    JArray recibos = (JArray)jObject["error"];
    return error;
}

这是 json 我的 response.content

"{\"error\":{\"code\":-10,\"message\":{\"lang\":\"en-us\",\"value\":\"The warehouse is not defined for the item.  [OWOR.Warehouse]\"}}}"

和我的class

public class Error
{
    public int code { get; set; }
    public Message message { get; set; }

    public class Message
    {
        public string lang { get; set; }
        public string value { get; set; }
    }
}

试试这个


if (response.Content != null)
{            {
Data    data = JsonConvert.DeserializeObject<Data>(response.Content);
}

并添加 class 数据(您可以更改名称)

public class Data
{
    public  Error error {get; set;}
}

您的 Model class 不正确,您试图 de-serialize 您的 JSON 字符串。将您的 Model classes 更改为:

public class Message
{
    public string lang { get; set; }
    public string value { get; set; }
}

public class Error
{
    public int code { get; set; }
    public Message message { get; set; }
}

public class Root
{
    public Error error { get; set; }
}

你的 de-serialization 将是:

if(string.IsNotNullOrEmpty(response.Content)
{
    if (response.Content.Contains("error"))
    {
        var error = JsonConvert.DeserializeObject<Root>(response.Content);
        return error;
    }   
}

您的 error 变量将包含反序列化结果的内容,您可以访问所需的数据。

使用 JSON 字符串的示例:https://dotnetfiddle.net/NZuwtl