c# - 将数据表转换为json时出错

标签 c# json winforms

将每行的数据表转换为 json 时,我没有得到正确的格式并且还收到错误 "RowError":"","RowState":2

这是我的代码:

 StrQry="select * from doctor_mas where version_code=1";
        DataTable dt=new DataTable();
        dt=Sqlhelper.OleDbTable(StrQry);


        try
        {
            for(int i=0;i<dt.Rows.Count;i++)
            {
             string JSONresult;
             JSONresult = JsonConvert.SerializeObject(dt.Rows[i]);
             var Update = new Salestrak.Update.updDoc();
             String Authrized = Update.updateTable((int)dt.Rows[i][0], "doctor_mas", JSONresult); 
            }
        }
        catch
        {
            MessageBox.Show("Sync Aborted");
        }

生成的 Json 字符串为:

{"RowError":"","RowState":2,"Table":[{"id":248.0,"birth_date":"1950-01-01T00:00:00","doctor_code":"D248","doctor_name":"Ajay A Haryani","version_code":1},{"id":293.0,"birth_date":"1990-05-26T00:00:00","doctor_code":"D293","doctor_name":"Aarti  Thakker","version_code":1}],"ItemArray":[248.0,"1950-01-01T00:00:00","D248","Ajay A Haryani",0,1.0,2.0,"Sandip Palekar","Mumbai-2",2.0,"Vasudhan,1],"HasErrors":false}

最佳答案

试试这个:

string JSONresult = JsonConvert.SerializeObject(dt.Rows[i].ItemArray);

基本上您想要序列化 ​​DataRow 的内容数组。

有一些开销的替代方案 -

var o = JsonConvert.SerializeObject(dt.Rows[0]);

for (var i = 0; i < JObject.Parse(o)["Table"].Count(); i++)
{
    var t = JObject.Parse(o)["Table"][i];
}

关于c# - 将数据表转换为json时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32068403/

相关文章:

c# - 如何将枚举与标志结合起来?

javascript - 编辑 json 对象中某些字段的更好方法?

javascript - node.js:创建通过数据驱动事件自动更新客户端的应用程序

c# - 如何在连接局域网的其他计算机上使用SQL Server数据库运行桌面应用程序

winforms - Visual Studio 2022 中的新项目调试对话框 - 为什么以及如何改变?

c# - 隐藏 TableLayoutPanel 中两个组合单元格之间的边框

c# - debian 上的单声道 : Could not find file "/srv/www/proj/bin\roslyn\csc.exe"

c# - Serilog - 日志文件的路径

c# - .NET反射的 "cost"是什么?

javascript - 使用 viewbag 数据和 jquery json