【发布时间】:2015-07-19 09:49:39
【问题描述】:
澄清我的问题,我想使用来自Namespace: Newtonsoft.Json.Linq 的JToken.SelectTokens Method (String)。如何使用方法 SelectTokens("") 获取每个节点 "174637"(unit_id) 和 "174638"(unit_id) 的子节点数?对于第一个节点,我应该得到1 和第二个2。
我试过这样:
foreach (var test in unit_ids) { //takes every unit_id, one by one
var children_of_unit_id = test.SelectTokens("*.[*]").count();
}
但它什么也没给我。
"174637": {
"1": {
"value_symbol": "3",
"exam_session_number": 1,
"exam_id": 207983,
"value_description": {
"en": "satisfactory",
}
}
}
"174638": {
"1": {
"value_symbol": "3",
"exam_session_number": 1,
"exam_id": 207984,
"value_description": {
"en": "satisfactory",
}
}
"2": {
"value_symbol": "3",
"exam_session_number": 2,
"exam_id": 207985,
"value_description": {
"en": "satisfactory",
}
}
}
已编辑
这是Json原创:
{
"grades": {
"course_units_grades": {
"173565": {
"1": {
"value_symbol": "3,5",
"exam_session_number": 1,
"exam_id": 208798,
"value_description": {
"en": "satisfactory plus",
"pl": "dst+"
}
}
},
"173566": {
"1": {
"value_symbol": "2",
"exam_session_number": 1,
"exam_id": 208797,
"value_description": {
"en": "unsatisfactory",
}
},
"2": {
"value_symbol": "3",
"exam_session_number": 2,
"exam_id": 208797,
"value_description": {
"en": "satisfactory",
}
}
}
},
"course_grades": {}
}
}
所以它看起来像这样:
foreach (var t in json_grade)//take every "grades" element, one by one
{
var test = t.SelectTokens("['grades'].['course_units_grades']");
foreach (var unit_ids in test)
{
foreach (var test in unit_ids) { //takes every unit_id, one by one
var children_of_unit_id = test.SelectTokens("*.[*]").count();
}
}
}
【问题讨论】:
-
json无效。 -
我认为你别无选择,只能扫描 json 树。我敢肯定那里有很多 Json.NET BFS/DFS 示例。
-
我已经编辑了我的帖子以显示 json 的原始结构以及
foreach的样子。 -
你不能
deserializejson吗?