gpt4 book ai didi

c# - 当类的名称是根元素时,Newtonsoft json 不会反序列化

转载 作者:行者123 更新时间:2023-12-05 00:07:15 24 4
gpt4 key购买 nike

当类的名称是根元素时,Newtonsoft json DeserializeObject 不会解析 json 消息。

var json = "  {\r\n \"amount\": {\r\n    \"currency\": \"EUR\",\r\n    \"value\": 99792\r\n  }\r\n}";
var amount = JsonConvert.DeserializeObject<Amount>(json)

和类(class)
class Amount 
{
[JsonProperty("value")]
public decimal? Value { get; set; }

[JsonProperty("currency")]
public string Currency { get; set; }
}

在这种情况下,金额属性为 null .问题是金额嵌套在更复杂的 json 中,我发现它总是返回空,因为它以“金额”开头。当然,我在 Amount 类中尝试了一些注释,例如 [DataContract] 和 [JsonObject] 但它仍然是空的
的情况下:
 var json = "{\r\n    \"currency\": \"EUR\",\r\n    \"value\": 99792\r\n }";

然后被正确解析。问题是如何在第一种情况下反序列化 json?

最佳答案

你应该像这样为你的类建模:

public class Amount
{
[JsonProperty("value")]
public decimal? Value { get; set; }

[JsonProperty("currency")]
public string Currency { get; set; }
}

public class RootObject
{
[JsonProperty("amount")]
public Amount Amount { get; set; }
}

然后反序列化 RootObject :
var amount = JsonConvert.DeserializeObject<RootObject>(json);

注意: 您可以将您的 JSON 粘贴到 json2csharp.com 中,它会为您将您的 JSON 建模为 C# 类。

关于c# - 当类的名称是根元素时,Newtonsoft json 不会反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59916185/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com