Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# &引用;System.ArgumentException:';不存在从对象类型Newtonsoft.Json.Linq.JValue到已知托管提供程序本机类型的映射;_C#_Sql_Arrays_Deserialization - Fatal编程技术网

C# &引用;System.ArgumentException:';不存在从对象类型Newtonsoft.Json.Linq.JValue到已知托管提供程序本机类型的映射;

C# &引用;System.ArgumentException:';不存在从对象类型Newtonsoft.Json.Linq.JValue到已知托管提供程序本机类型的映射;,c#,sql,arrays,deserialization,C#,Sql,Arrays,Deserialization,我正在尝试从JSON数组响应中插入数据,这是我作为响应得到的。但是,我不断收到一个“System.ArgumentException:'不存在从对象类型Newtonsoft.Json.Linq.JValue到已知托管提供程序本机类型的映射。”“向我抛出的错误。我拥有的代码和JSON数组如下: 我尝试过谷歌搜索,向我的同龄人询问答案,但都没有用。我想知道,既然JSON对象是序列化的,那么在将其保存到数据库之前是否需要对其进行更改?同时,我得到的最常见的答案是在文本字段区域中添加.Text的扩展名

我正在尝试从JSON数组响应中插入数据,这是我作为响应得到的。但是,我不断收到一个“System.ArgumentException:'不存在从对象类型Newtonsoft.Json.Linq.JValue到已知托管提供程序本机类型的映射。”“向我抛出的错误。我拥有的代码和JSON数组如下:

我尝试过谷歌搜索,向我的同龄人询问答案,但都没有用。我想知道,既然JSON对象是序列化的,那么在将其保存到数据库之前是否需要对其进行更改?同时,我得到的最常见的答案是在文本字段区域中添加.Text的扩展名

JSON数组:

    "data": [
                {
                    "device": "deviceone",
                    "time": 2359,
                    "data": "0000th34"
}]

如前所述,引发错误的消息是“对象类型Newtonsoft.Json.Linq.JValue到已知托管提供程序本机类型的映射不存在。”

尝试这样做,即只添加.ToString()`如下代码所示,因为错误来自将对象作为参数值发送。它必须是字符串、int、bool等

 using (SqlCommand cmd = new SqlCommand("Insert into devicedata(device,time,data) VALUES (@device,@time,@data)", con))
    {
        cmd.Parameters.AddWithValue("@device", jsonObj.data[0].device.ToString());
        cmd.Parameters.AddWithValue("@time", jsonObj.data[0].time.ToString());
        cmd.Parameters.AddWithValue("@data", jsonObj.data[0].data.ToString());
        cmd.ExecuteNonQuery(); // Running the code will result in the error being thrown
    }

请调试代码并找出jsonObj.data[0]返回的内容。数据`?您是否也可以放置您正在使用的json或json结构?是的,您需要将变量强制转换为与数据库列类型对应的类型,然后再将其添加为参数,或者至少转换为一种类型,并隐式转换为所需的参数类型。@PranayRana我已经编辑了question@iakobski网上有没有教这方面的教程?我很不擅长编程对不起。谢谢你的输入!它已成功保存到数据库中@DanZainal-欢迎,如果为您工作,请接受回答
 using (SqlCommand cmd = new SqlCommand("Insert into devicedata(device,time,data) VALUES (@device,@time,@data)", con))
    {
        cmd.Parameters.AddWithValue("@device", jsonObj.data[0].device.ToString());
        cmd.Parameters.AddWithValue("@time", jsonObj.data[0].time.ToString());
        cmd.Parameters.AddWithValue("@data", jsonObj.data[0].data.ToString());
        cmd.ExecuteNonQuery(); // Running the code will result in the error being thrown
    }