色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c 主從表轉(zhuǎn)化制定的json

傅智翔1年前8瀏覽0評論

C 主從表轉(zhuǎn)化制定的 json,是將數(shù)據(jù)庫中的主從表數(shù)據(jù)轉(zhuǎn)化為 JSON 格式的一種方案。該方案通常應(yīng)用于 Web 應(yīng)用程序中,大大簡化了前端與后端的數(shù)據(jù)交互。下面我們來具體講解一下這個(gè)方案的實(shí)現(xiàn)方式:

首先,我們需要在后端編寫 SQL 語句,用來查詢主從表數(shù)據(jù),并將查詢結(jié)果存儲在一個(gè)字典對象中。如下所示:

Dictionary<string, object> data = new Dictionary<string, object>();
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlCommand command = new SqlCommand(query, connection))
{
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
string parentKey = reader.GetString(parentKeyColumnIndex);
if (!data.ContainsKey(parentKey))
{
data[parentKey] = new Dictionary<string, object>()
{
{ "parent", new Dictionary<string, object>() },
{ "children", new List<Dictionary<string, object>>() }
};
}
Dictionary<string, object> parent = (Dictionary<string, object>)data[parentKey]["parent"];
for (int i = 0; i < reader.FieldCount; i++)
{
string key = reader.GetName(i);
if (key != parentKeyColumnName)
{
parent[key] = reader.GetFieldValue<object>(i);
}
}
if (!reader.IsDBNull(parentKeyColumnIndex))
{
Dictionary<string, object> child = new Dictionary<string, object>();
for (int i = 0; i < reader.FieldCount; i++)
{
string key = reader.GetName(i);
if (key == parentKeyColumnName)
{
child[key] = reader.GetFieldValue<object>(i);
}
else
{
child[key] = reader.IsDBNull(i) ? null : reader.GetFieldValue<object>(i);
}
}
((List<Dictionary<string, object>>)data[parentKey]["children"]).Add(child);
}
}
}
}

在 SQL 語句查詢出數(shù)據(jù)存儲到字典對象以后,我們需要將該字典對象轉(zhuǎn)化為 JSON 格式,并將其傳輸?shù)角岸恕^D(zhuǎn)化的過程比較簡單,我們只需要利用 Newtonsoft.Json 這個(gè)第三方庫,調(diào)用其 SerializeObject 方法即可。如下所示:

string json = JsonConvert.SerializeObject(data.Values);
return Content(json, "application/json");

上面的代碼將字典對象中的所有值進(jìn)行了序列化,并以 JSON 格式返回給前端。在前端中,我們可以直接使用 JavaScript 將該 JSON 數(shù)據(jù)轉(zhuǎn)換為 JS 對象,并對其進(jìn)行操作。