接收json字符串数据库MS SQL数据库,格式问题

时间:2019-07-10 12:00:53

标签: c# json sqlcommand

我运行一个C#应用程序,该应用程序使用存储过程从MS SQL 2016获取json。

string t = da.ExecuteScalar().ToString();

我得到了格式奇怪的json:

"{\"Komponent\":\"00066X96A\",\"Opis\":\"Part2 II F P\\/L S!\\\"31\\\"\",\"Jednos\":\"szt\",\"Enabled\":true,\"Powierzchnia\":0.0070,\" ... SQLcommand added escaped char. 

我的存储过程从Management Studio生成了清晰的json,但是C#应用添加了奇怪的字符。

在C#中,我执行标量:

SqlConnection  conn2 = new SqlConnection(builder2.ConnectionString);
conn2.Open();
SqlCommand da = new SqlCommand("[dbo].[R1079]", conn2 );
da.CommandType = CommandType.StoredProcedure;
string t = da.ExecuteScalar().ToString();

在MVC应用中作为响应发送时,不仅是调试模式,也会发生这种情况:

public JsonResult Test(int id)
    {
        SqlConnectionStringBuilder builder2 = new qlConnectionStringBuilder();
        builder2.ConnectionString= "Data Source=cz1-dbs\\BER;Initial Catalog=BER;Integrated Security=True;Application Name=Rapor.exe";


        SqlConnection  conn2 = new SqlConnection(builder2.ConnectionString);

        conn2.Open();

        SqlCommand da = new SqlCommand("[dbo].[R1079]", conn2 );

        da.CommandType = CommandType.StoredProcedure;
        string t = da.ExecuteScalar().ToString();

        return Json(t, "application/json", System.Text.Encoding.UTF8, JsonRequestBehavior.AllowGet);

    }

1 个答案:

答案 0 :(得分:1)

您可以使用ToString方法从结果中生成一个字符串。字符串中的“怪异”字符是转义字符。

您可以使用NuGet包Newtonsoft.Json对json进行序列化和反序列化。 例如:

JsonConvert.SerializeObject(someobject);

这将从您传入的对象生成一个json字符串。

JsonConvert.DeserializeObject<SomeObject>(jsonString);

这将从您传入的jsonString中生成SomeObject类型的对象。

希望这对您有帮助!