gpt4 book ai didi

c# - 分隔包含对象的 JSON 字符串

转载 作者:太空宇宙 更新时间:2023-11-03 20:12:00 28 4
gpt4 key购买 nike

我有一个包含数组的 JSON 字符串,它无法反序列化。我想拆分以便我可以访问产品列表及其代码和数量,但每次我尝试它都会崩溃。 Json 字符串返回如下:

{
"transaction_id": "88",
"store_id": "3",
"cashier_id": null,
"loyalty_account": null,
"transaction_time": "1382027452",
"total_amount": "99.45",
"items": {
"1239219274": "1",
"3929384913": "1"
},
"payments": {
"cc": "99.45"
}
}

我想把它分成:

{
"transaction_id": "88",
"store_id": "3",
"cashier_id": null,
"loyalty_account": null,
"transaction_time": "1382027452",
"total_amount": "99.45"
}

{
"1239219274":"1",
"3929384913":"1"
}

{
"cc": "99.45"
}

最佳答案

编辑:已更新以反射(reflect)您的编辑。

这不是一个 JSON 数组,而是一个 JSON 对象,它基本上是值的字典

JSON 数组序列化如下,方括号[ ]:

{
"name":"Outer Object",
"items": [
{
"name":"Item #1"
},
{
"name":"Item #2"
},
{
"name":"Item #3"
}
]
}

您可能应该花几分钟学习 Json.NET它将为您处理细节。

以下是我如何将该字符串反序列化为一个对象:

public class Transaction
{
[JsonProperty("transaction_id")]
public int Id { get; set; }

[JsonProperty("store_id")]
public int StoreId { get; set; }

[JsonProperty("cashier_id")]
public int? CashierId { get; set; }

[JsonProperty("loyalty_account")]
public string LoyaltyAccount { get; set; }

[JsonProperty("transaction_time")]
public int TransactionTime { get; set; }

[JsonProperty("total_amount")]
public decimal TotalAmount { get; set; }

[JsonProperty("items")]
public Dictionary<string, string> Items { get; set; }

[JsonProperty("payments")]
public Dictionary<string, string> Payments { get; set; }
}

然后我可以简单地写:

Transaction transaction = JsonConvert.DeserializeObject<Transaction>(json);

关于c# - 分隔包含对象的 JSON 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19434500/

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