Sumith Peringathara Ответов: 1

Ошибка при преобразовании строки JSON в datatable


Привет,

У меня есть требование получить некоторые данные из БД с помощью WebAPI и отправить обратно пользователю в виде строки JSON и преобразовать обратно в datatable. Я никак не мог понять, что происходит не так. Пожалуйста, предложите.


строка формата JSON
-----------------
"[{\"TestID\":\"1 \",\"WorkOrderID\":\"2 \",\"Рецепт Приготовления\":\"1110 \",\"Фиткоффа\":\"0 \",\"FitCoeffB\":\"0 \",\"FitCoeffC\":\"0 \",\"Темп0\":\"0 \",\"Темп1\":\"0 \",\"Темп2\":\"0 \",\"TestResult\":\"1 \"},{\"Тестид\":\"1 \",\"WorkOrderID\":\"2 \",\"Рецепт Приготовления\":\"1110 \",\"Фиткоффа\":\"0 \",\"FitCoeffB\":\"0 \",\"FitCoeffC\":\"0 \",\"Темп0\":\"0 \",\"Темп1\":\"0 \",\"Темп2\":\"0 \",\"TestResult\":\"1 \"}]"

Исключение
----------
Неожиданный токен в формате JSON, когда значение объекта DataTable. Ожидал Стартаррея, получил струну. Путь ", строка 1, позиция 557.

Трассировка стека ошибок
--------------------

на Newtonsoft.В формате JSON.Конвертеры.DataTableConverter.ReadJson(JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer)
на Newtonsoft.В формате JSON.Сериализация.JsonSerializerInternalReader.DeserializeConvertable(конвертер JsonConverter, JsonReader чтения, тип объекта тип объекта existingValue)
на Newtonsoft.В формате JSON.Сериализация.JsonSerializerInternalReader.Десериализация(JsonReader reader, тип objectType, Boolean checkAdditionalContent)
на Newtonsoft.В формате JSON.JsonSerializer.DeserializeInternal(JsonReader reader, тип objectType)
на Newtonsoft.В формате JSON.JsonConvert.DeserializeObject(строковое значение, тип type, настройки JsonSerializerSettings)
на Newtonsoft.В формате JSON.JsonConvert.DeserializeObject(строковое значение, тип типа)
в iMFCTest.Service.iMFCDAL.<getcalibrationdata>d__3.MoveNext() in C:\Users\20063692\source\Workspaces\E-07430-01-01\Solution\iMFCTest\iMFCTest.Service\iMFCDAL.cs:line 61

Что я уже пробовал:

Я использовал приведенный ниже код для преобразования:
DataTable table=(DataTable)JsonConvert.DeserializeObject(dataString, (typeof(DataTable)));

1 Ответов

Рейтинг:
2

AkiStar

Я проверил и не нашел никаких проблем. Не могли бы вы проверить, какой JSON вы на самом деле получаете, и проверить его с помощью JSONLint, является ли json действительным или нет? Потому что json, о котором вы упомянули, верен, и я смог преобразовать его в datatable. Проверьте, какой именно json вы получаете, и проверьте его.

Проверьте мой код:

строка s = "[{\"TestID\":\"1 \",\"WorkOrderID\":\"2 \",\"Рецепт приготовления\":\"1110 \",\"Фиткоффа\":\"0 \",\"FitCoeffB\":\"0 \",\"FitCoeffC\":\"0 \",\"Темп0\":\"0 \",\"Темп1\":\"0 \",\"Темп2\":\"0 \",\"TestResult\":\"1 \"},{\"Тестид\":\"1 \",\"WorkOrderID\":\"2 \",\"Рецепт приготовления\":\"1110 \",\"Фиткоффа\":\"0 \",\"FitCoeffB\":\"0 \",\"FitCoeffC\":\"0 \",\"Темп0\":\"0 \",\"Темп1\":\"0 \",\"Темп2\":\"0 \",\"TestResult\":\"1 \"}]";

DataTable table = (DataTable)JsonConvert.DeserializeObject(s, (typeof(DataTable)));