. Net помещаем \ туда, где им не место - PullRequest
0 голосов
/ 07 мая 2020

Мне нужна помощь, я просто пытаюсь получить данные из SQL и преобразовать их в json, но NET продолжает помещать \ 's везде: O Это некоторые из методов, которые я пытался использовать, но я продолжайте получать тот же результат.

SqlConnection Connection;

DataSet dataSet = new DataSet();

SqlDataAdapter dataAdapter = new SqlDataAdapter("exec getAllItems '%'", Connection);
Connection.Open();
dataAdapter.Fill(dataSet);
Connection.Close();

DataTable data = dataSet.Tables[0];

itemCount = data.Rows.Count;


string json = JsonConvert.SerializeObject(dataSet, Formatting.Indented);


string builtJson = DataTableToJSONWithJSONNet(data);
return json ;

public string DataTableToJSONWithJSONNet(DataTable table)
        {
            string JSONString = string.Empty;
            JSONString = JsonConvert.SerializeObject(table);
            return JSONString;
        }


public string DataTableToJSONWithJavaScriptSerializer(DataTable table)
    {
        JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
        List<Dictionary<string, object>> parentRow = new List<Dictionary<string, object>>();
        Dictionary<string, object> childRow;
        foreach (DataRow row in table.Rows)
        {
            childRow = new Dictionary<string, object>();
            foreach (DataColumn col in table.Columns)
            {
                childRow.Add(col.ColumnName, row[col]);
            }
            parentRow.Add(childRow);
        }
        return jsSerializer.Serialize(parentRow);
    }
    public string DataTableToJSONWithStringBuilder(DataTable table)
    {
        var JSONString = new StringBuilder();
        if (table.Rows.Count > 0)
        {
            JSONString.Append("[");
            for (int i = 0; i < table.Rows.Count; i++)
            {
                JSONString.Append("{");
                for (int j = 0; j < table.Columns.Count; j++)
                {
                    if (j < table.Columns.Count - 1)
                    {
                        JSONString.Append("\"" + table.Columns[j].ColumnName.ToString() + "\":" + "\"" + table.Rows[i][j].ToString() + "\",");
                    }
                    else if (j == table.Columns.Count - 1)
                    {
                        JSONString.Append("\"" + table.Columns[j].ColumnName.ToString() + "\":" + "\"" + table.Rows[i][j].ToString() + "\"");
                    }
                }
                if (i == table.Rows.Count - 1)
                {
                    JSONString.Append("}");
                }
                else
                {
                    JSONString.Append("},");
                }
            }
            JSONString.Append("]");
        }
        return JSONString.ToString();
    }
Returned Data 

"{\ r \ n \" Таблица \ ": [\ r \ n {\ r \ n \" itemName \ ": \" POR C: SCARITA \ ", \ r \ n \" Код товара \ ": \" 11NAH \ ", \ r \ n \" Доступный_сток \ ": 48.80000000, \ r \ n \" pA \ " : null, \ r \ n \ "pA_cutva \": null, \ r \ n \ "pB \": null, \ r \ n \ "pB_cutva \": null, \ r \ n \ "pC \": null , \ r \ n \ "pC_cutva \": null, \ r \ n \ "unit \": \ "KG \", \ r \ n \ "item_class \": \ "MARFURI \", \ r \ n \ "item_group \": \ "PRODUSE \", \ r \ n \ "meat_type \": \ "POR C \", \ r \ n \ "cotatva \": 0,090000, \ r \ n \ "min_qty_order \ ": null, \ r \ n \" obsart \ ": 3, \ r \ n \" pret_stand \ ": null, \ r \ n \" pret_stand_cuTVA \ ": null, \ r \ n \" Physical_stock \ ": 24.80000000, \ r \ n \ "OnTheRoad_stock \": 24.00000000 \ r \ n}, \ r \ n {\ r \ n \ "itemName \": \ "POR C: CONGELAT BLOC \", \ r \ n \ "itemCode \": \ "111CBL \", \ r \ n \ "Available_stock \": 129.50000000, \ r \ n \ "pA \": 5.30000000 , \ r \ n \ "pA_cutva \": 5.78000000, \ r \ n \ "pB \": 5,30000000, \ r \ n \ "pB_cutva \": 5.77700000, \ r \ n \ "pC \": null, \ r \ n \ "pC_cutva \": null, \ r \ n \ "unit \": \ "KG \", \ r \ n \ "item_class \": \ "MARFURI \", \ r \ n \ "item_group \ ": \" PRODUSE CARNE \ ", \ r \ n \" тип_ мяса \ ": \" POR C \ ", \ r \ n \" cotatva \ ": 0,090000, \ r \ n \" min_qty_order \ " : null, \ r \ n \ "obsart \": 2, \ r \ n \ "pret_stand \": null, \ r \ n \ "pret_stand_cuTVA \": null, \ r \ n

Спасибо за помощь!

1 Ответ

0 голосов
/ 08 мая 2020

Я использовал шаблон API и пытался вернуть строку, а не просто данные, поэтому мой вывод был странным. Как только я изменил свой код на приведенный ниже, он отлично заработал.

public DataTable Get()
        {

            SqlConnection Connection;

            DataSet dataSet = new DataSet();
            connetionString = "Data Source=" + dbIP + ";Initial Catalog=" + sqlCatalog + ";User ID=" + sqlUser + ";Password=" + sqlPassword;
            Connection = new SqlConnection(connetionString);

            SqlDataAdapter dataAdapter = new SqlDataAdapter("getAllItems '%'", Connection);
            List<string> list = new List<string>();


          Connection.Open();
            dataAdapter.Fill(dataSet);
            Connection.Close();

            dataSet.DataSetName = "Items";
            DataTable data = dataSet.Tables[0];


            return data;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...