【发布时间】:2019-02-03 01:43:39
【问题描述】:
我不确定我是否 100% 正确地描述了主题中的问题,但我相信这些示例可以解决问题。
我有如下 JSON 结构(注意:这可能会改变,所以我需要倾向于通用解决方案)
一张包含多个行项目的发票:
{
"contactName": "Company",
"lineItems": [
{
"quantity": 7.0,
"description": "Beer No* 45.5 DIN KEG"
},
{
"quantity": 2.0,
"description": "Beer Old 49.5 DIN KEG"
}
],
"invoiceNumber": "C6188372"
}
这是想要的结果数据结构(具有重复数据和不同行项目信息的多张发票):
[{
"contactName": "Company",
"quantity": 7.0,
"description": "Beer No* 45.5 DIN KEG"
"invoiceNumber": "C6188372"
},{
"contactName": "Company",
"quantity": 2.0,
"description": "Beer Old 49.5 DIN KEG"
"invoiceNumber": "C6188372"
}]
因此,“发票”中的每个“订单项”都应该“导致”新发票中包含重复的其他元素。
可以接受围绕结果数据结构的小变化,我可以围绕它调整我的代码。 我一直在使用几个类似的问题,例如:
- C# flattening json structure
- Flatten an array of objects that may contain arrays
- How can I flatten a collection of objects (which in turn contain collections)?
- Generically Flatten Json using c#(等)。我相信这是最接近的解决方案?但不确定是否有更好的方法
有关更多背景信息,我需要将其用于 CSV 导出。所以结果集应该是生成的 CSV 中的两行。
非常感谢任何提示/提示。谢谢。
【问题讨论】:
-
只是为了澄清您是否正在使用第一个 JSON 结构并希望将其重组为第二个结构?还是您的 C# 类生成第一个 JSON 结构,而您希望它生成第二个 JSON 结构(实际上第一个 JSON 结构不应该存在)
-
@Skintkingle First 是正确的 - 我正在使用第一个 JSON 结构,我需要将其重组为第二个结构。
-
你现在有一个可以很好地反序列化第一个示例的 C# 类吗?如果是这样,您能否在问题中提供该类。 :)
-
@Skintkingle 由于动态数据结构,我正在使用 object/JObject/JToken 等,所以(遗憾的是)我没有固定的 c# 类
-
那么您正在读取的 JSON 具有未知的数据结构?或者它只是有条件地有时不在这里或那里提供参数?
标签: c# json recursion json.net