如何对没有名称的值使用 JsonConvert.DeserializeObject

how to use JsonConvert.DeserializeObject for values without name

我有一个像这样的 json 字符串: {"status":false,"data":{"errors":{"":"error45"}}}

我无法为这个 json 字符串创建 class,因为最后一部分没有名称 => ""

我测试这个class:

public class Result
{
    public bool status { set; get; }
    public ResultDetail data { set; get; }
}

public class ResultDetail
{
    public ErrorDetails errors { set; get; }       
}

public class ErrorDetails
{        
    public string abc { set; get; }
}

但是 abc returns 为空 !!!!

您可以使用 Dictionary<string, string> 错误。

public class Result
{
    public bool status { set; get; }
    public ResultDetail data { set; get; }
}

public class ResultDetail
{
    public Dictionary<string, string> errors { set; get; }
}

并使用以下反序列化和访问字典。

var result = JsonConvert.DeserializeObject<Result>(json);
Console.WriteLine(result.data.errors.Values.FirstOrDefault());

或者您可以将值赋给变量

obj.data.errors.TryGetValue("", out string error);
Console.WriteLine(error);

我还要提到这一点,属性 名称应该是专有名称(首字母大写)。为了能够正确反序列化,请对 类 的每个属性使用 [JsonProperty("corresponding_json_key")] 以符合 C# 标准。

public class Result
{
    [JsonProperty("status")]
    public bool Status { set; get; }

    [JsonProperty("data")]
    public ResultDetail Data { set; get; }
}