首页 > 解决方案 > 接收json字符串数据库MS SQL数据库,格式化问题

问题描述

我运行一个 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);

    }

标签: c#jsonsqlcommand

解决方案


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

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

JsonConvert.SerializeObject(someobject);

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

JsonConvert.DeserializeObject<SomeObject>(jsonString);

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

希望这对你有帮助!


推荐阅读