我有这个字符串,实际上是JSON格式。
{
"key1": val1
"key2": val2
.
.
.
"keyN": {
"keyN1": valN1
"keyN2": valN2
"keyN3": {
"keyN3-1": valN3-1
"keyN3-2": valN3-2
}
}
.
.
.
"keyNN": {
"keyNN1": valNN1
"keyNN2": valNN2
"keyNN3": [
{
"keyNN3-1": valNN3-1,
"keyNN3-2": valNN3-2,
"keyNN3-3": {
"keyNN3-3-1": valueNN3-3-1,
"keyNN3-3-2": valueNN3-3-2,
"keyM": {
"KeyM1": ValueM1,
"KeyM2": ValueM2,
.
.
"KeyMN": ValueMN
}
}
},
.
.
.
{
"keyNN3-1": valNN3-1,
"keyNN3-2": valNN3-2,
"keyNN3-3": {
"keyNN3-3-1": valueNN3-3-1,
"keyNN3-3-2": valueNN3-3-2,
"keyM": {
"KeyM1": ValueM1,
"KeyM2": ValueM2,
.
.
"KeyMN": ValueMN
}
}
}
]
}
}
我想一直获得密钥“ keyM”的所有内容,我的意思是,我想返回这个
[
{
"KeyM1": ValueM1,
"KeyM2": ValueM2,
.
.
"KeyMN": ValueMN
},
.
.
{
"KeyM1": ValueM1,
"KeyM2": ValueM2,
.
.
"KeyMN": ValueMN
}
]
我收到不同格式的字符串,第一个结构不是唯一的结构,但始终具有“ keyM”。在这一刻,我正在做一会儿,但是效率不高,我想知道是否存在更好的方法。
答案 0 :(得分:1)
如果我正确理解了您的JSON结构,则应该可以使用JSON.NET这样的方法:
var jObject = JsonConvert.Deserialize<JObject>(jsonText);
var keyMItems = jObject.SelectTokens("keyM");
然后,您对这些项目的处理将取决于您的用例。要输出列出的内容,可以将其打包到新的JArray中。
Console.WriteLine(new JArray(keyMItems).ToString());
答案 1 :(得分:0)
JObject o = JObject.Parse(initialJson);
IEnumerable<JToken> keyMs = o.SelectTokens("$..keyM");
测试JsonPaths http://jsonpath.com/
的好工具