使用命名空间序列化
本文关键字:序列化 命名空间 | 更新日期: 2023-09-27 18:08:06
如果我的json看起来像这样:(手写的,所以它可能有错误)
{
"http://devserver.somesite.com/someendpoint/1/2/3$metadata#Something.Start": [
{
"Title": "start",
"Endpoint": "https://devserver.somesite.com/someendpoint/1/2/3/start"
}
],
"http://devserver.somesite.com/someendpoint/1/2/3$metadata#Something.Stop": [
{
"Title": "stop",
"Endpoint": "https:// devserver.somesite.com/someendpoint/1/2/3/stop"
}
]
}
是否有任何简单的,内置的方式(JSON.net),让它明白有一个名称空间在这里发挥?或者是否有一种方法可以通过属性设置基于JsonProperty的变量或模式?
我不能将URL作为业务对象的一部分,因为这会随着环境的变化而变化。
我知道我可以创建一个自定义json转换器,但在走那条路之前,我想看看是否有更多的开箱即用的东西来处理这个。另一种选择是通过xml获取数据并手动处理。
假设您将此作为您从web调用收到的字符串,您可以在JSON.NET中执行以下操作。
var json = "your string here";
var obj = JObject.Parse(json);
foreach(var ns in obj.Properties) {
var arr = (JArray)ns.Value;
foreach(var obj2 in arr) {
// do you logic here to get the properties
}
}
James Newton-King提供的另一个选项可以这样做,看起来更简洁:
var list = JsonConvert.DeserializeObject<Dictionary<string, List<MyClass>>>(json);