我的資料庫表上的一列包含以下 JSON 序列化字串。
Table: school_details
school_id class_json
25 {
"class_id": "1377",
"class_name": "XXX",
"No.of students": "100"
}
25 {
"class_id": "1378",
"class_name": "YYX",
"No.of students": "80"
}
現在我想讀取此資料并將其作為 JSON 陣列發送,如下面的“預期輸出”所示。但是在執行以下操作時,我得到了不同的輸出。我應該如何更改代碼以獲得所需的輸出?將 JSON 直接存盤在資料庫表中是否是一個好習慣?或者需要在將其存盤在資料庫中之前將其轉換為字串?
string school_id="25";
string status="success";
sql = "SELECT class_json FROM school_details WHERE school_id @school_id";
cmd = new SqlCommand(sql, con);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@school_id", school_id);
dr = cmd.ExecuteReader();
var dt = new DataTable();
if (dr.HasRows)
{
dt.Load(dr);
status = "success";
}
var getData = new { status, school_id,Class_Deatils=dt };
return getData;
輸出:
{
"status": "success",
"school_id": "25",
"Class_Deatils": [
{
"class_json ": "{\n \"class_id\": \"1377\",\n \"class_name\": \"XXX\",\n \"No.of students\": \"100\"\n }"
},
{
"class_json ": "{\n \"class_id\": \"1378\",\n \"class_name\": \"YYX\",\n \"No.of students\": \"80\"\n }"
}
]
}
預期輸出:
{
"status": "success",
"school_id": "25",
"Class_Deatils": [{
"class_id": "1377",
"class_name": "XXX",
"No.of students": "100"
},
{
"class_id": "1378",
"class_name": "YYX",
"No.of students": "80"
}
]
}
uj5u.com熱心網友回復:
我建議您使用序列化和反序列化來保存和檢索資料庫中的 JSON 資料,它可以幫助您預防問題,并且您可以很好地控制 JSON 資料。您可以非常輕松地使用 newtonsoft 庫進行序列化和反序列化。
你看到的例子訪問https://www.newtonsoft.com/json
uj5u.com熱心網友回復:
你得到的結果class_json實際上是一個轉義的字串,而不是一個純 json。
如果你想把它作為json使用,你可以使用該JObject.Parse()方法。
以下是如何做到這一點:
using System;
using Newtonsoft.Json.Linq;
public class Program
{
public static void Main()
{
string class_json_str = "{\n \"class_id\": \"1377\",\n \"class_name\": \"XXX\",\n \"No.of students\": \"100\"\n }";
JObject o = JObject.Parse(class_json_str );
// Now you have a JSON objects which contains the data.
// You can access it's properties like this
var classId = o["class_id"];
Console.WriteLine(classId);
// In case you want to make a string again, use the following
var jsonString = o.ToString();
Console.WriteLine(jsonString);
}
}
PS 最好的做法是將它正確地反序列化為一個類,而不是將它當作一個 json 來使用。然后在發送到前端時序列化回來。有關更多資訊,請參閱:https :
//docs.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-how-to
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/377975.html
上一篇:如何過濾重復元素直到新元素出現
