C# 将动态 JSON JToken 解析为列表
C# Parse a dynamic JSON JToken to a List
我们可以将动态 JSON 解析为对象列表 List<DiffModel>
public class DiffModel
{
public string Property { get; set; }
public string OldValue { get; set; }
public string NewValue { get; set; }
}
JSON 是在 library 的帮助下生成的,它有助于比较 2 个 JSON 对象并找出差异。差异存储为 JToken
示例 JSON 在帮助下生成的 JToken 值
JToken patch = jdp.Diff(left, right)
方法
{
"Id": [
78485,
0
],
"ContactId": [
767304,
0
],
"TextValue": [
"text value",
"text14"
],
"PostCode": [
null
]
}
从 JSON 对象中第一项的值是
DiffModel [0] = Property ="id" OldValue="78485" NewValue="0"
DiffModel [1] = Property ="contactId" OldValue="767304" NewValue="0"
DiffModel [2] = Property ="TextValue" OldValue="text value" NewValue="text14"
DiffModel [3] = Property ="PostCode" OldValue= null NewValue=null
我们能否在动态 JSON 的属性之间导航并构建类似的模型
您可以这样定义数据模型:
struct DiffModel
{
public string Property { get; init; }
public object OldModel { get; init; }
public object NewModel { get; init; }
}
我用过struct
,但你可以用class
、record
任何你喜欢的。
然后您可以将 JToken
转换为 Dictionary<string, object[]>
。
- 密钥将是 属性 名称
- 该值将是 属性 值
var rawModel = patch.ToObject<Dictionary<string, object[]>>();
最后,您需要的是 DiffModel
和 KeyValuePair<string, object[]>
之间的映射:
var diffModels = rawModel
.Select(pair => new DiffModel
{
Property = pair.Key,
OldModel = pair.Value.First(),
NewModel = pair.Value.Last(),
}).ToArray();
我们可以将动态 JSON 解析为对象列表 List<DiffModel>
public class DiffModel
{
public string Property { get; set; }
public string OldValue { get; set; }
public string NewValue { get; set; }
}
JSON 是在 library 的帮助下生成的,它有助于比较 2 个 JSON 对象并找出差异。差异存储为 JToken
示例 JSON 在帮助下生成的 JToken 值
JToken patch = jdp.Diff(left, right)
方法
{
"Id": [
78485,
0
],
"ContactId": [
767304,
0
],
"TextValue": [
"text value",
"text14"
],
"PostCode": [
null
]
}
从 JSON 对象中第一项的值是
DiffModel [0] = Property ="id" OldValue="78485" NewValue="0"
DiffModel [1] = Property ="contactId" OldValue="767304" NewValue="0"
DiffModel [2] = Property ="TextValue" OldValue="text value" NewValue="text14"
DiffModel [3] = Property ="PostCode" OldValue= null NewValue=null
我们能否在动态 JSON 的属性之间导航并构建类似的模型
您可以这样定义数据模型:
struct DiffModel
{
public string Property { get; init; }
public object OldModel { get; init; }
public object NewModel { get; init; }
}
我用过struct
,但你可以用class
、record
任何你喜欢的。
然后您可以将 JToken
转换为 Dictionary<string, object[]>
。
- 密钥将是 属性 名称
- 该值将是 属性 值
var rawModel = patch.ToObject<Dictionary<string, object[]>>();
最后,您需要的是 DiffModel
和 KeyValuePair<string, object[]>
之间的映射:
var diffModels = rawModel
.Select(pair => new DiffModel
{
Property = pair.Key,
OldModel = pair.Value.First(),
NewModel = pair.Value.Last(),
}).ToArray();