Ошибка Json

  • Автор темы Автор темы arbplv
  • Дата начала Дата начала

arbplv

Client
Регистрация
28.03.2020
Сообщения
373
Реакции
23
Баллы
18
Добрый.
Есть валидный json (проверял валидаторами разными + встроенным тестером) при парсинге
var json = JObject.Parse(resRequest);
выдает ошибку
Выполнение действия CSharp OwnCode. Error reading JObject from JsonReader. Current JsonReader item is not an object: StartArray. Path '', line 1, position 1.
Подскажите куда копать? что не так?
 
89427
вот так все отлично отрабатывает...
 
Вот json который надо распарсить
C#:
Развернуть Свернуть Копировать
string json = @"[
  {
    'id': '69a7831f-f63b-4322-a940-e43c78e6b9ea',
    'et1': {
      'id': 'b554643e-f908-474c-83c5-08d662b2fe61',
      'eventName': '',
      'eventInfo': '0:0 (0:0)'
    },
    'et2': {
      'id': '881e509e-3672-4512-bad2-53de0484cbe1',
      'eventName': '',
      'eventInfo': ''
    }
  },
  {
    'id': '7373f7b2-9757-41c7-ab57-261468edcf79',
    'et1': {
      'id': '7b6df2a1-7144-447e-9952-d97779cdaec8',
      'eventName': '',
      'eventInfo': '0:0 (0:0)'
    },
    'et2': {
      'id': 'ae75a9a1-a31d-4457-8e6c-ffbb4be4b3f7',
      'eventName': '',
      'eventInfo': ''
    }
  }
]";
JObject o = JObject.Parse(json);
 
89428
вот так все ок...
что с этим не так?
JObject o = JObject.Parse(json);
что не нравится?
спс
 
Ты пытаешься распарсить объект, хотя в данных массив.
Вместо
C#:
Развернуть Свернуть Копировать
JObject o = JObject.Parse(json);
используй
C#:
Развернуть Свернуть Копировать
JArray o = JArray.Parse(json);
 
  • Спасибо
Реакции: arbplv
я бы сделал более нахальней...

C#:
Развернуть Свернуть Копировать
using Newtonsoft.Json;
dynamic results = JsonConvert.DeserializeObject<dynamic>(YOUR_JSON);

Сериализация/десериализация в шарпе часто подразумевает уже существующий класс с существующими полями, если какие-то из полей лишние относительно объявленного класса, то получится ошибка.

Выше привел код с приведением к типу dynamic, должно сработать.
 
  • Спасибо
Реакции: arbplv

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)