有人可以告诉我该怎么做吗?
我在c#中有这个功能:
public string ConvertLocationTableToString()
{
int radius = 0;
string locationType = "marker";
DataTable dt = new DataTable();
Using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ToString()))
{
Using (SqlCommand cmd = new SqlCommand("SELECT lat=Latitude, lng=Longitude, FROM Locations", con))
{
con.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
Dictionary<string, object> row;
foreach (DataRow dr in dt.Rows)
{
row = new Dictionary<string, object>();
foreach (DataColumn col in dt.Columns)
{
row.Add(col.ColumnName, dr[col]);
}
rows.Add(row);
}
return serializer.Serialize(rows);
}
}
}
表地理位置包含两行纬度和 lontitude 值。
它产生的字符串值为:
[{&#34; LAT&#34;:24.816925048828125,&#34; LNG&#34;: - 107.37641906738281} ,{&#34; lat&#34;:24.815664291381836,&#34; lng&#34;: - 107.38169097900391}]
但我希望产生以下内容:
[{&#34; Coordinates&#34;:[{&#34; lat&#34;:24.816925048828125,&#34; lng&#34;: - 107.37641906738281}],&#34; Radius&#34;: 0,&#34; LocationType&#34;:&#34; marker&#34;} ,{&#34; Coordinates&#34;:[{lat&#34;:24.815664291381836,&#34; lng&#34;: - 107.38169097900391}],&#34; Radius&#34;:0,&#34; LocationType& #34;:&#34;标记&#34;}}]
请注意,“Radius”和“LocationType”不是表格中的字段。
感谢您的帮助。
rubenc
答案 0 :(得分:0)
您正在序列化从表中返回的行。如果您在C#中创建了一个与您想要的输出匹配的对象,然后循环返回的行并设置相关项,则可以将其序列化。
在您的情况下,对象将包括: - 坐标 - 某种类型的列表 - Radius - int我假设 - LocationType - 猜测枚举
然后你将创建这些的arrray,并序列化数组。