最近、JSON を使用するプロジェクトに取り組んでいました。Json 文字列を使用して JavaScript を容易にするために、データベースからデータを取得する 2 つの方法がありました。
初め
このようにJson文字列を形成するためにデータベースで処理を行うことです
select
ID,
'{ "Comments": ['+
Substring(
(SELECT
',{ '+
'"Comment" : "' + REPLACE(Comments,'"','\"') + '",'+
'"Name" : "' + REPLACE(Name,'"','\"') +
'}'
FROM JsonTbl
where JsonTbl.ID = tbl.ID
for xml path('')
),2,250000)
+'] }' as JsonData
from tbl
2番
このように、データベースからデータを無加工で選択し、フロントエンドで Json 文字列を作成する処理を行うことです。
DataTable data = GetDataFromDatabase();
StringBuilder sb = new StringBuilder();
sb.Append("{ \"Comments\": [");
for (int i = 0; i < data.Rows.Count; i++)
{
sb.Append("{");
sb.Append("\"Comment\" : \"" + data.Rows[i]["Comment"].ToString().Replace('"', '\"') + "\",");
sb.Append("\"Name\" : \"" + data.Rows[i]["Comment"].ToString().Replace('"', '\"') + "\"");
sb.Append("},");
}
sb.Remove(sb.Length - 1, 1);
性能的にもメンテナンス的にもどっちがいいのかなと思いました。
注 : ここに投稿するためにコードをトリミングしたことを考慮してください。元のコードはこれよりもはるかに大きく、MSSQL 2008 と .Net(C#) を使用しています。