Анализатор JObject прекращает выполнение без вывода каких-либо ошибок или ошибок - PullRequest
1 голос
/ 08 января 2020

Я пытаюсь проанализировать JSON результат от webapi с этим кодом:

var pemail = "tonys@gmail.com";
var _pid = GetRequest(Global.token, apiBaseUri, apiGetPerson +"?pemail="+ pemail).Result;
var pid = JObject.Parse(_pid).GetValue("perso_nid").ToString();
MessageBox.Show(pid);

Когда я запускаю это, он просто завершает выполнение без вывода или ошибки.

Во время отладки var _pid получает правильное значение

[{"person_id":1141,
"person_fname":"Tony",
"person_lname":"Stark",
"person_initials":"IM",
"person_mono":"1234567890",
"person_pemail":"tonys@gmail.com",
"status":"0",
"db_tstamp":"2020-01-08T22:03:08.9659938"}]

Но на следующей строке он просто останавливает выполнение и не go на следующую строку. Нет вывода или ошибка.

1 Ответ

1 голос
/ 08 января 2020

Показанный в вашем вопросе JSON - это массив, содержащий объект, а не объект. Чтобы разобрать его и извлечь значение person_id из первой записи массива, используйте JToken.Parse() с SelectToken():

var pid = JToken.Parse(_pid).SelectToken("[0].person_id")?.ToString();

Или используйте JArray.Parse(), чтобы убедиться, что значение root действительно является массивом:

var pid = JArray.Parse(_pid)[0]?["person_id"]?.ToString();

Обратите внимание, что имя свойства JSON равно "person_id", а не "perso_nid"; обязательно используйте правильное имя в своем коде.

Демонстрационная скрипка здесь .

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