gpt4 book ai didi

C# 反序列化具有多个对象的 JSON 数组

转载 作者:行者123 更新时间:2023-12-04 01:14:46 27 4
gpt4 key购买 nike

我正在接收一个我无法控制的 JSON 格式的示例:

{
"Transaction Information": [
{
"Type": "This is the Type"
},
{
"Action": "No"
},
{
"Owner": "Simpsons"
},
{
"Buyer/Broker": "Y"
},
{
"Compensation to Buyer": 3.0
}
]
}

我想将它反序列化为一个类,例如:

public class Transaction
{
[JsonProperty("Transaction Information")]
public TransactionInformation[] TransactionInformation { get; set; }
}

public partial class TransactionInformation
{
[JsonProperty("Type", NullValueHandling = NullValueHandling.Ignore)]
public string Type { get; set; }

[JsonProperty("Action", NullValueHandling = NullValueHandling.Ignore)]
public string Action { get; set; }

[JsonProperty("Owner", NullValueHandling = NullValueHandling.Ignore)]
public string Owner { get; set; }

[JsonProperty("Buyer/Broker", NullValueHandling = NullValueHandling.Ignore)]
public string BuyerBroker { get; set; }

[JsonProperty("Compensation to Buyer", NullValueHandling = NullValueHandling.Ignore)]
public long? CompensationToBuyer { get; set; }
}

使用代码

var obj = JsonConvert.DeserializeObject<Transaction>(json);

然而,这给了我一个 Transaction.TransactionInformation 对象,其中包含 5 个记录,每个记录都包含所有 5 个元素,每个记录都具有除 5 个元素之一之外的所有空值。

enter image description here

有没有一种简单的方法可以在一条记录中返回所有 5 个元素?

最佳答案

有没有一种简单的方法可以在一条记录中返回所有 5 个元素?

当然——只需将每个属性放在一条记录中:

var finalRecord = new TransactionInformation
{
Type = obj.TransactionInformation.FirstOrDefault(x => !string.IsNullOrEmpty(x.Type))?.Type,
Action = obj.TransactionInformation.FirstOrDefault(x => !string.IsNullOrEmpty(x.Action))?.Action,
Owner = obj.TransactionInformation.FirstOrDefault(x => !string.IsNullOrEmpty(x.Owner))?.Owner,
BuyerBroker = obj.TransactionInformation.FirstOrDefault(x => !string.IsNullOrEmpty(x.BuyerBroker))?.BuyerBroker,
CompensationToBuyer = obj.TransactionInformation.FirstOrDefault(x => x.CompensationToBuyer.HasValue)?.CompensationToBuyer
};

您正在使用的 JSON 数据不是最方便的格式。在一个完美的世界中,它看起来像这样:

{
"Transaction Information": [{
"Type": "This is the Type",
"Action": "No",
"Owner": "Simpsons",
"Buyer/Broker": "Y",
"Compensation to Buyer": 3.0
}
]
}

那么您正在做的事情会工作得很好,您不必执行最后一步来规范化数据。

关于C# 反序列化具有多个对象的 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63714779/

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