【发布时间】:2020-12-14 15:14:55
【问题描述】:
我从这样的 API 收到一个数组:
[
{
"uniqueId": "Env30362",
"field": "StartDate",
"value": "1999-01-01",
"modificationDateTime": "2020-12-12T04:10:55.0970000Z",
"modificationState": "Created"
},
{
"uniqueId": "Env30362",
"field": "EndDate",
"value": "2020-01-01",
"modificationDateTime": "2020-12-12T04:10:55.0970000Z",
"modificationState": "Created"
},
{
"uniqueId": "Env30363",
"field": "AnnualIncentiveCurrency",
"value": "EUR",
"modificationDateTime": "2020-12-06T04:10:52.0970000Z",
"modificationState": "Created"
},
{
"uniqueId": "Env30363",
"field": "NatureOfContract",
"value": "Permanent",
"modificationDateTime": "2020-12-06T04:10:52.0970000Z",
"modificationState": "Created"
},
{
"uniqueId": "Env30363",
"field": "FinalProcessDate",
"value": "2020-12-01",
"modificationDateTime": "2020-12-06T04:10:52.0970000Z",
"modificationState": "Created"
},
{
"uniqueId": "Env30362",
"field": "Currency",
"value": "EUR",
"modificationDateTime": "2020-12-13T04:10:55.0970000Z",
"modificationState": "Changed"
},
{
"uniqueId": "Env30362",
"field": "Status",
"value": "Active",
"modificationDateTime": "2020-12-13T04:10:55.0970000Z",
"modificationState": "Changed"
},
{
"uniqueId": "Env30363",
"field": "DateOfBirth",
"value": "1980-12-01",
"modificationDateTime": "2020-12-10T04:10:52.0970000Z",
"modificationState": "Changed"
},
{
"uniqueId": "Env30363",
"field": "HiringReason",
"value": "Growth",
"modificationDateTime": "2020-12-10T04:10:52.0970000Z",
"modificationState": "Changed"
}
]
我想根据uniqueId 和modificationState 对字段进行过滤和分组,以便我可以创建一个新的JObject,其中包含与创建/更改相关的所有字段和值。我用 Linq 尝试了不同的方法,但我还没有找到在 IEnumerable 或 JToken 上使用多个 where 子句的方法
期望的输出:
{
"uniqueId": "Env30363",
"modificationState": "Created"
"finalProcessDate": "2020-12-01",
"modificationDateTime": "2020-12-06T04:10:52.0970000Z",
"natureOfContract": "Permanent",
"annualIncentiveCurrency" : "EUR"
}
{
"uniqueId": "Env30363",
"modificationState": "Changed"
"modificationDateTime": "2020-12-10T04:10:52.0970000Z",
"hiringReason": "growth",
"dateOfBirth" : "1980-12-01"
}
{
"uniqueId": "Env30362",
"modificationState": "Created",
"modificationDateTime": "2020-12-12T04:10:55.0970000Z",
"endDate": "2020-01-01",
"startDate" : "1999-01-01"
}
{
"uniqueId": "Env30362",
"modificationState": "Changed",
"modificationDateTime": "2020-12-13T04:10:55.0970000Z",
"currency" : "EUR",
"status": "Active"
}
如何使用 NewtonSoft.Json 实现这一目标?
【问题讨论】:
-
我用 Linq 尝试了不同的方法,但我还没有找到在 JToken 的 IEnumerable 上使用多个 where 子句的方法 - 那么你能edit你的问题吗包括minimal reproducible example 显示什么不起作用?目前尚不清楚输入应该如何转换为输出,特别是因为缺少外部
[和]括号的输出甚至不是格式正确的 JSON。