我一直在寻找一种简单的方法来将数据集从PostgreSQL数据库转换为 JSON,以便在我正在构建的项目中使用。
这是我第一次使用 JSON,我发现找到一个简单的方法来做这件事真的很棘手。目前我一直在使用 StringBuilder 从数据集中的信息创建 JSON 字符串,但我听说使用命名空间的.NET 3.5 可以非常简单地做到这一点System.Runtime.Serialization
,尽管我还没有找到一个简单的关于如何做到这一点的文章或博客!最简单的方法是什么?
使用 Newtonsofts Json.Net并查看JSON.NET 和 JavaScriptSerializer中的 DataTable JSON 序列化,它用于创建 DataSet-to-JSON 转换器。
对于其他关注此主题的人:
这是将数据集转换为 JSON 数组的最简单方法,就像json_encode
( PHP ) 对 ASP.Net 所做的那样:
using Newtonsoft.Json;
public static string ds2json(DataSet ds) {
return JsonConvert.SerializeObject(ds, Formatting.Indented);
}
public static string GetJSONString(DataTable Dt)
{
string[] StrDc = new string[Dt.Columns.Count];
string HeadStr = string.Empty;
for (int i = 0; i < Dt.Columns.Count; i++)
{
StrDc[i] = Dt.Columns[i].Caption;
HeadStr += "\"" + StrDc[i] + "\" : \"" + StrDc[i] + i.ToString() + "¾" + "\",";
}
HeadStr = HeadStr.Substring(0, HeadStr.Length - 1);
StringBuilder Sb = new StringBuilder();
Sb.Append("{\"" + Dt.TableName + "\" : [");
for (int i = 0; i < Dt.Rows.Count; i++)
{
string TempStr = HeadStr;
Sb.Append("{");
for (int j = 0; j < Dt.Columns.Count; j++)
{
TempStr = TempStr.Replace(Dt.Columns[j] + j.ToString() + "¾", Dt.Rows[i][j].ToString());
}
Sb.Append(TempStr + "},");
}
Sb = new StringBuilder(Sb.ToString().Substring(0, Sb.ToString().Length - 1));
Sb.Append("]}");
return Sb.ToString();
}
var JObject = eval('(' + JSONString + ');');
for(var i = 0; i < JObject .Employees.length; i++)
{
var val1 = JObject.Employees[i].EmployeeID;
var val2 = JObject.Employees[i].NationalIDNumber;
var val3 = JObject.Employees[i].Title;
var val4 = JObject.Employees[i].BirthDate;
var val5 = JObject .Employees[i].HireDate ;
}
也许您听说过新发布的.NET Framework 4.0中的system.runtime.serialization.json命名空间。
public static T WriteJson<T>(this System.Data.DataSet dataSet)
{
try
{
XmlDocument doc = new XmlDocument();
doc.LoadXml(dataSet.GetXml());
return (T)Convert.ChangeType(JsonConvert.SerializeXmlNode(doc).Replace("null", "\"\"").Replace("'", "\'"), typeof(T));
}
catch (Exception ex)
{
throw ex;
}
}