Dan Zainal Ответов: 1

System.argumentexception: "не существует сопоставления типа объекта newtonsoft.json.linq.jvalue с известным собственным типом управляемого поставщика".


Привет. я пытаюсь вставить данные из ответа массива JSON, который я получил в качестве ответа. Тем не менее, я продолжаю получать "систему.ArgumentException: 'не существует сопоставления с типом объекта Newtonsoft.Json.Linq.JValue к известному управляемому поставщику native type.'" ошибка, брошенная на меня. Код, который у меня есть, выглядит следующим образом:

частный недействительными btnSave_Click(объект отправителя, EventArgs в электронной)
{


строка connectionString;
параметр connectionString = @"источник данных=ноутбук-R0HOA2B6;начальный каталог=добавлены;идентификатор пользователя=Джон;пароль=1234";


SqlConnection con = new SqlConnection(connectionString);
//Открывает соединение с базой данных
против.Открыть();

динамический jsonObj = JsonConvert.DeserializeObject(txtResponse.Text);

используя (команда sqlcommand cmd и = новая команда sqlcommand("вставить в devicedata(устройство,время,дата) значения (устройство,@,@время@данные)", кон))
{

cmd.параметры.AddWithValue("@device", jsonObj.data[0].device);
cmd.параметры.AddWithValue ("@time", jsonObj.data[0].time);
cmd.параметры.AddWithValue ("@data", jsonObj.data[0].data);
УМК.Метод executenonquery();





}
против.Закрывать();

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

Лучшее, что я сделал, это то, что я пробовал, - это гуглить. Я действительно очень плохо кодирую. Любая/вся помощь приветствуется.

1 Ответов

Рейтинг:
2

Dominic Burford

Вам нужно использовать конкретный тип, который отображает JSON в структуру класса, с которой может работать ваш код. Используйте что-то вроде этого (я не знаю точной структуры, так как вы ее не указали, но вы поняли идею).

[DataContract]
public class Device
{
  [DataMember]
  public int Device {get; set;}

  [DataMember]
  public DateTime Time {get; set;}

  [DataMember]
  public string Data {get; set;}
}
Затем в вашем коде десериализуйте свой ответ в это вместо этого.
Device jsonObj = JsonConvert.DeserializeObject<Device>(txtResponse.Text);