如果我的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获取数据并手动处理。
答案 0 :(得分:0)
假设您将此作为从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);