如何对没有名称的值使用 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; }
}
我有一个像这样的 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; }
}