Получение базы данных json MS MS SQL, проблема форматирования - PullRequest
0 голосов
/ 10 июля 2019

Я запускаю приложение C #, которое получает json из MS SQL 2016 с помощью хранимой процедуры.

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. 

Моя хранимая процедура генерирует clearjson из Management Studio, но приложение 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 Ответ

1 голос
/ 10 июля 2019

Вы создаете строку из результата с помощью метода ToString.«Странные» символы в вашей строке - экранированные символы.

Вы можете сериализовать и десериализовать json с помощью пакета NuGet Newtonsoft.Json.Например:

JsonConvert.SerializeObject(someobject);

Это сгенерирует строку json из передаваемого вами объекта.

JsonConvert.DeserializeObject<SomeObject>(jsonString);

Это сгенерирует объект типа SomeObject из передаваемой вами jsonString.

Надеюсь, это поможет вам!

...