【问题标题】:JSON String Parsing & List Elements Binding to DataGrid c# in winformJSON字符串解析和列表元素在winform中绑定到DataGrid c#
【发布时间】:2017-08-06 23:14:50
【问题描述】:

我正在寻找将 json 响应绑定到 winform 中的 datagrid 的解决方案。过去 3 天我一直在尝试,但进展并不顺利。

我的 c# json 类

public class RootObject
{
    public List<string> uid { get; set; }
    public List<string> email { get; set; }
    public List<string> join { get; set; }
    public List<string> mobile { get; set; }
    public List<string> name { get; set; }
    public List<string> state { get; set; }
    public List<string> district { get; set; }
    public List<string> address { get; set; }
    public List<string> pincode { get; set; }
    public List<string> balance { get; set; }
    public bool error { get; set; }
    public string error_msg { get; set; }
} 

我的 json 响应 -

{"uid":["58924a301801e2.01873036","58c12008715ac3.83978983","58c2c524060d34.25876386","58c61faae8abd4.23607623"],"email":["ing@gmail.com","lemarg@gmail.com","aji@gmail.com","grt@gmail.com"],"join":["2017-02-02 02:20:56","2017-03-09 09:27:40","2017-03-10 15:24:25","2017-03-13 00:00:00"],"mobile":["2147483647","2147483647","214748897","7002352089"],"name":["saurabh saikia","RATUL BHUYAN","AZHAR UDDIN","mon saikia"],"state":["assam","assam","ASSAM","assam"],"district":["jorhat","Jorhat","NAGAON","jrt"],"address":["jorhat","Jorhat","BAGARIGURI, JURIA","jrt"],"pincode":["785001","785001","785001","123456"],"balance":["1.4500","0.0000","0.0000","0.0000"],"error":false,"error_msg":"User Sucessfully Registred "} 

在调用 Web 服务后我反序列化响应并尝试使用添加到数据网格中的按钮单击事件 -

var jsonlist = JsonConvert.DeserializeObject<RootObject>(jsonResponse);

DataRow rows = this.USER_TABLE.NewRow();

USER_TABLE.Rows.Add(jsonlist.uid.ToArray());
USER_TABLE.Rows.Add(jsonlist.email.ToArray());
USER_TABLE.Rows.Add(jsonlist.join.ToArray());
USER_TABLE.Rows.Add(jsonlist.mobile.ToArray());
USER_TABLE.Rows.Add(jsonlist.name.ToArray());
USER_TABLE.Rows.Add(jsonlist.state.ToArray());
USER_TABLE.Rows.Add(jsonlist.district.ToArray());
USER_TABLE.Rows.Add(jsonlist.address.ToArray());
USER_TABLE.Rows.Add(jsonlist.pincode.ToArray());
USER_TABLE.Rows.Add(jsonlist.balance.ToArray());

我正在附加输出 - DataGridView with data

【问题讨论】:

  • 如果它不起作用,究竟发生了什么?
  • 将值添加到列而不是行说 --- uid 电子邮件加入所有列都由 uid 填充
  • 你能在你绑定到数据网格的地方添加代码吗?
  • 我认为缺少一些代码来真正说明发生了什么(或异常)也就是说,我使用 NewtonSoft 的 Json 类中的 PopulateObject(我喜欢)的旧视频实际上可以帮助你(那里Datagrids 也是另一个地方...youtu.be/j28OXdlJ2EI

标签: c# json winforms datagridview


【解决方案1】:

将数据添加到 DataTable 的代码不正确。每行应包含每个 List 属性中的一个元素

var jsonlist = JsonConvert.DeserializeObject<RootObject>(jsonResponse);

for(int i=0; i < jsonlist.uid.Count; i++)
    USER_TABLE.Rows.Add(
            jsonlist.uid[i],
            jsonlist.email[i],
            jsonlist.join[i],
            jsonlist.mobile[i],
            jsonlist.name[i],
            jsonlist.state[i],
            jsonlist.district[i],
            jsonlist.address[i],
            jsonlist.pincode[i],
            jsonlist.balance[i]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-19
    • 1970-01-01
    • 2023-04-03
    • 2021-02-08
    • 2020-08-13
    • 2018-09-18
    相关资源
    最近更新 更多