System.ArgumentOutOfRangeException:“ JSON超出范围”反序列化json

时间:2019-07-24 02:18:00

标签: c# arrays json database

在指定json响应在数组中之后,我使用了正确的语法指向数组中的数据。数组编号为0的项目很好。问题开始于数组位置1,2等之后。我不断抛出系统。“ ArgumentOutOfRangeException:'索引超出范围。必须为非负数,并且小于集合的大小。 参数名称:index'“错误。json数组结果在下面的链接中

我尝试更改某些语法,但无济于事。

private void btnSave_Click(object sender, EventArgs e)
{
    string connectionString;
    connectionString = @"Data Source=LAPTOP-R0HOA2B6;Initial Catalog=DemoDb;User ID=John;Password=1234";

    SqlConnection cnn;
    cnn = new SqlConnection(connectionString);

    //Opens the connection to the database
    cnn.Open();

    dynamic jsonObj = JsonConvert.DeserializeObject(txtResponse.Text);

    using (SqlConnection con = new SqlConnection(connectionString))
    {
        using (SqlCommand cmd = new SqlCommand("Insert into devicedata(device,time,data) VALUES (@device,@time,@data)", con))
        {
            cmd.Parameters.AddWithValue("device", jsonObj.data[0].device);
            cmd.Parameters.AddWithValue("time", jsonObj.data[1].time);
            cmd.Parameters.AddWithValue("data", jsonObj.data[2].data);
            cmd.ExecuteNonQuery();
        }
        cnn.Close();
    }
}

运行代码后,在调试模式下,数组中的值对应于代码,并且已将值正确分配给.device参数。

cmd.Parameters.AddWithValue("device", jsonObj.data[0].device); 

后续代码:

cmd.Parameters.AddWithValue("device", jsonObj.data[1].time); 
cmd.Parameters.AddWithValue("device", jsonObj.data[2].data);

被抓住并被抛出错误。

json array

0 个答案:

没有答案