C# metoda JToken.SelectTokens jakie wyrażenie JPath

C# metoda JToken.SelectTokens jakie wyrażenie JPath
  • Rejestracja: dni
  • Ostatnio: dni
0

Dostaję taką odpowiedź od API:

Kopiuj
{
"course_editions": {
"2014/SL": [
  {
    "grades": {
      "course_units_grades": {
        "159715": {
          "1": {
            "value_symbol": "4",
            "exam_session_number": 1,
            "exam_id": 198172,
            "value_description": {
              "en": "good",
            }
          }
        }
      },
      "course_grades": {}
    }
  },
  {
    "grades": {
      "course_units_grades": {
        "159796": {
          "1": {
            "value_symbol": "5",
            "exam_session_number": 1,
            "exam_id": 198259,
            "value_description": {
              "en": "very good",
            }
          }
        }
      },
      "course_grades": {}
    }
  },

Chciałbym użyć metody JToken.SelectTokens z przestrzeni nazw: Newtonsoft.Json.Linq aby otrzymać tylko te elementy: "159796" oraz "159715"

Próbowałem, tak:

Kopiuj
string oceny_json = GetResponse(podpisz(url_oceny));
var elementy = JObject.Parse(oceny_json).SelectTokens("['course_editions'].['2014/SZ'].[*].['grades'].*");

Co oczywiście nie działa. Chciałbym mieć tylko te elementy aby móc użyć ich w pętli:

Kopiuj
foreach(var lp in elementy) {
}
  • Rejestracja: dni
  • Ostatnio: dni
0

Udało mi się.

Kopiuj
            var jobj = JObject.Parse(oceny_json);

            var coursesTokens = jobj.SelectTokens("course_editions.2014/SZ[*].grades.course_units_grades");
            foreach (var t in coursesTokens)
            {
                    var tmp2 = t.Cast<JProperty>().Select(o => o.Name);
                    foreach (string coursesToken in tmp2)
                    {
                        Console.WriteLine(coursesToken);
                    }
            }

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.