Разобрать Google Транслитерацию Json используя c# - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь получить значение от транслитерации Google Json. Json код выглядит следующим образом:

[
  "SUCCESS",
  [
    [
      "hlo",
      [
        "jaisa",
        "jaisaa",
        "jaissa",
        "jaisaaa",
        "zaisa",
        "jaissaa"
      ],
      [],
      {
        "candidate_type": [
          0,
          0,
          0,
          0,
          0,
          0
        ]
      }
    ],
    [
      "ok",
      [
        "main",
        "mainn",
        "man",
        "mein",
        "mann",
        "meinn"
      ],
      [],
      {
        "candidate_type": [
          0,
          0,
          0,
          0,
          0,
          0
        ]
      }
    ]

  ]
]

мой C# код для получения значения из json:

var userObj = JObject.Parse(jsontxt.Text.Trim());
wordstxt.Text = userObj[1][0][0].ToString();

Нет имени переменной для извлечения значения из json код, я получаю сообщение об ошибке:

Ошибка чтения JObject из JsonReader. Текущий элемент JsonReader не является объектом: StartArray. Путь '', строка 1, позиция 1.

Может кто-нибудь помочь мне решить эту проблему. Я пытаюсь получить значение hlo > jaisa

1 Ответ

0 голосов
/ 23 марта 2020

Как @ JonSkeet , упомянутых в разделе комментариев. Вы можете проанализировать это Json до JArray, а затем использовать userObj[1][0][1]; для получения ожидаемого списка.

static void Main(string[] args)
{
    var jsonString = @"[
                  ""SUCCESS"",
                  [
                    [
                      ""hlo"",
                      [
                        ""jaisa"",
                        ""jaisaa"",
                        ""jaissa"",
                        ""jaisaaa"",
                        ""zaisa"",
                        ""jaissaa""
                      ],
                      [],
                      {
                        ""candidate_type"": [
                          0,
                          0,
                          0,
                          0,
                          0,
                          0
                        ]
                      }
                    ],
                    [
                      ""ok"",
                      [
                        ""main"",
                        ""mainn"",
                        ""man"",
                        ""mein"",
                        ""mann"",
                        ""meinn""
                      ],
                      [],
                      {
                        ""candidate_type"": [
                          0,
                          0,
                          0,
                          0,
                          0,
                          0
                        ]
                      }
                    ]

                  ]
                ]";


    var userObj = JArray.Parse(jsonString);

    var expectedListValues = userObj[1][0][1];

    foreach (JToken item in expectedListValues)
    {
        Console.WriteLine(item.ToString());
    }

    Console.ReadLine();
}

Вывод будет:

jaisa
jaisaa
jaissa
jaisaaa
zaisa
jaissaa

Если вы хотите взять только первый предмет, вы также можете использовать userObj[1][0][1][0].ToString().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...