【问题标题】:DataTable result to Json, what is wrong with my Json?DataTable 结果到 Json,我的 Json 有什么问题?
【发布时间】:2015-05-22 10:55:27
【问题描述】:

我正在尝试将 SQL 存储过程的结果转换为 DataTable 并将其转换为 Json,以便稍后我可以将它与 Highcharts 一起使用。由于某种原因,我得到的结果格式错误:

我的控制器:

 public ActionResult GetDailyOutputByHour(int machine, string dateFrom, string dateTo, string line = "All")
    {

        Graph g = repository.Graphs.Where(p => p.GraphID == 1).FirstOrDefault();
        string result = repository.GetGraphData(g.StoredProc + " '" + line + "', " + machine + ", '" + dateFrom + "', '" + dateTo + "'");

        return Content(result, "application/json");
    }

存储库:

public string GetGraphData(string sp)
    {
        var connection = ConfigurationManager.ConnectionStrings["EFDbContext"].ConnectionString;
        using (var dataAdapter = new SqlDataAdapter("exec " + sp, connection))
        {
            var dataTable = new DataTable();

            dataAdapter.Fill(dataTable);
            dataAdapter.FillSchema(dataTable, SchemaType.Mapped);
            string json =  JsonConvert.SerializeObject(dataTable, Formatting.Indented);

            return json;
        }
    }

我得到的结果:

"[\r\n  {\r\n    \"Hour\": 7,\r\n    \"Input\": 4614,\r\n    \"Output\": 2952,\r\n    \"InTarget\": 3033,\r\n    \"OutTarget\": 2533\r\n  },\r\n  {\r\n    \"Hour\": 8,\r\n    \"Input\": 3729,\r\n    \"Output\": 2940,\r\n    \"InTarget\": 3033,\r\n    \"OutTarget\": 2533\r\n  },\r\n  {\r\n    \"Hour\": 9,\r\n    \"Input\": 4158,\r\n    \"Output\": 3798,\r\n    \"InTarget\": 3033,\r\n    \"OutTarget\": 2533\r\n  },\r\n  {\r\n    \"Hour\": 10,\r\n    \"Input\": 5310,\r\n    \"Output\": 4023,\r\n    \"InTarget\": 3033,\r\n    \"OutTarget\": 2533\r\n  },\r\n  {\r\n    \"Hour\": 11,\r\n    \"Input\": 1344,\r\n    \"Output\": 2547,\r\n    \"InTarget\": 3033,\r\n    \"OutTarget\": 2533\r\n  }\r\n]"

我做错了什么?

【问题讨论】:

    标签: c# json asp.net-mvc highcharts json.net


    【解决方案1】:

    你实际上得到了正确的输出老板你看错了我认为 您应该在 Visual Studio 中使用 Text Visualizer 查看输出,所以我认为您的输出还可以

         DataSet ds = new DataSet();
        DataTable dt;
        DataRow dr;
        DataColumn objstrError;
        DataColumn objBytearr;
        dt = new DataTable();
        objstrError = new DataColumn("strID", Type.GetType("System.String"));
        objBytearr = new DataColumn("strName", Type.GetType("System.String"));
        dt.Columns.Add(objstrError);
        dt.Columns.Add(objBytearr);
        dr = dt.NewRow();
        dr["strID"] = "1";
        dr["strName"] = "Britains got talent";
        dt.Rows.Add(dr);
        string json    =JsonConvert.SerializeObject(dt,Newtonsoft.Json.Formatting.Indented);
         normal intelisense gives:"[\r\n  {\r\n    \"strID\": \"1\",\r\n          \"strName\": \"Britains got talent\"\r\n  }\r\n]"
    using TextVisualizer if you see it then looks like this:[
    {
    "strID": "1",
    "strName": "Britains got talent"
     }
    ]
    

    【讨论】:

    • 数据集 ds = new DataSet();数据表 dt;数据行博士;数据列 objstrError;数据列 objBytearr; dt = 新数据表(); objstrError = new DataColumn("strID", Type.GetType("System.String")); objBytearr = new DataColumn("strName", Type.GetType("System.String")); dt.Columns.Add(objstrError); dt.Columns.Add(objBytearr);博士 = dt.NewRow();博士 ["strID"] = "1"; dr["strName"] = "英国人才辈出"; dt.Rows.Add(dr);
    • 我看到这是正确的,但是当我将它传递给 Highchart 时,我没有加载任何数据。当我手动更改格式(删除所有 \r\n 和 )时,它可以工作。
    • 如果它有效就使用它 boss string json = JsonConvert.SerializeObject(dt, Newtonsoft.Json.Formatting.None);
    • 使用格式化输出。无:-[{"strID":"1","strName":"Britains got Talent"}]
    • 我的输出是这样的:"[{\"Hour\":7,\"Input\":4614,\"Output\":2952,\"InTarget\":3033,\ "OutTarget\":2533},{\"Hour\":8,\"Input\":3729,\"Output\":2940,\"InTarget\":3033,\"OutTarget\":2533}, {\"小时\":9,\"输入\":4158,\"输出\":3798,\"InTarget\":3033,\"OutTarget\":2533},{\"小时\":10 ,\"输入\":5310,\"输出\":4023,\"InTarget\":3033,\"OutTarget\":2533},{\"小时\":11,\"输入\":2055 ,\"输出\":2991,\"InTarget\":3033,\"OutTarget\":2533},{\"小时\":12,\"输入\":5520,\"输出\":2118 ,\"InTarget\":3033,\"OutTarget\":2533}]"
    猜你喜欢
    • 1970-01-01
    • 2010-11-09
    • 2016-05-22
    • 2023-03-05
    • 2014-07-15
    • 2014-06-26
    • 2013-02-19
    • 2023-04-01
    • 2013-08-25
    相关资源
    最近更新 更多