【发布时间】:2021-06-26 18:24:45
【问题描述】:
我有一个业务案例,我需要获取任何传入的 JSON 有效负载(因此 JSON 对象必须是动态的,而不是由 C# 类预定义的)并将给定的命名空间添加到其所有包含的键。
例如,如果以下有效负载进入:
{
"property1": "value1",
"property2": 2,
"property3": true,
"property4": {
"myArray": [
{
"arrayProperty1": "im the first object in array",
"arrayProperty2": "some value"
},
{
"arrayProperty1": "im the second object in array",
"arrayProperty2": "some value"
}
]
}
}
那么它需要产生如下输出:
{
"mynamespace.property1": "value1",
"mynamespace.property2": 2,
"mynamespace.property3": true,
"mynamespace.subObj": {
"mynamespace.myArray": [
{
"mynamespace.arrayProperty1": "im the first object in array",
"mynamespace.arrayProperty2": "some value"
},
{
"mynamespace.arrayProperty1": "im the second object in array",
"mynamespace.arrayProperty2": "some value"
}
]
}
}
这可能使用 C# 吗?我尝试在 stackoverflow 上搜索任何类似的问题,但这是我得到的最接近的问题(他们使用的是 javascript):Prepending namespace to all of a JSON object's Keys
【问题讨论】:
-
如果你使用json.net,你可以使用
PropertyNameMappingJsonReader从this answer到Change key name of data loaded through JsonExtensionData来添加命名空间前缀。然后使用该阅读器反序列化到JToken,或直接流式传输到输出StringWriter,如this answer 到How do I get formatted JSON in .NET using C#? 所示。
标签: c# json .net namespaces prefix