2016-06-15 26 views
1

嗨我想从数据库中检索经度和纬度并将其保存到隐藏字段中。没有colomn名称的javascript序列化

表dt的从数据库中检索

latitude  longitude 
19.2094000000 73.0939000000 
19.2244070000 73.1545760000 
19.1659242536 82.2436523438 
18.3336694458 80.4309082031 

我使用的JavaScript序列化将其保存在隐藏字段

 JavaScriptSerializer oSerializer = new JavaScriptSerializer(); 

     var Result = (from c in dt.AsEnumerable() 
         select new 
         { 
          Latitude = c.Field<Decimal>("Latitude"), 
          Longitude = c.Field<Decimal>("Longitude") 
         }).ToList(); 

     hdnControl.Value = oSerializer.Serialize(Result); 

这导致到

[ 
    {"Latitude":19.2094000000,"Longitude":73.0939000000}, 
    {"Latitude":19.2244070000,"Longitude":73.1545760000}, 
    {"Latitude":19.1659242536,"Longitude":82.2436523438}, 
    {"Latitude":18.3336694458,"Longitude":80.4309082031} 
] 

,但我不希望结果数据中的列名称,因为我需要进一步处理它并从中提取经纬度。

如何在没有列名的隐藏字段中保存数据,所以数据看起来像这样?

[ 
    {19.2094000000,73.0939000000}, 
    {19.2244070000,73.1545760000}, 
    {19.1659242536,82.2436523438}, 
    {18.3336694458,80.4309082031} 
] 
+0

你的目标是不是有效的JavaScript,或许是θ,λ值应在阵列而非实物。 – RobG

+0

哇,thanx很多,这给了我新的方法,并在JavaScript数组是可访问的 –

+0

thnx很多robG –

回答

1

您可以创建一个新的数组,并在其中加入格式化的内容:

var oldArr = [ 
    {"Latitude":19.2094000000,"Longitude":73.0939000000}, 
    {"Latitude":19.2244070000,"Longitude":73.1545760000}, 
    {"Latitude":19.1659242536,"Longitude":82.2436523438}, 
    {"Latitude":18.3336694458,"Longitude":80.4309082031} 
]; 

var newArr = []; 

for (i = 0; i < oldArr.length; i++) { 
    newArr.push({oldArr[i].Latitude, oldArr[i].Longitude}); 
} 

“oldArr”是你的数组你从数据库中获得,而“newArr”是一个新创建的数组。

比你循环旧数组的所有项目,并只添加旧数组项目的值(没有键)。

在结尾处“newArr”正好包含您要求的内容。

+0

简单是'oldArr.map(函数(obj){返回[obj.Latitute,obj.Longitude]})或使用箭头函数:'oldArr.map(obj => [obj.Latitute,obj.Longitude])'。 ;-) – RobG

+0

谢谢你们俩, –

1

请试试这个...

string json = DataTableToJSON(dt_main); 
jsonnew = @"{""Data"":" + json + "}"; 


private static string DataTableToJSON(DataTable table) 
{ 

    List<string[]> result = table.Rows 
.Cast<DataRow>() 
.Select(row => row.ItemArray 
    .Select(x => x.ToString()) 
    .ToArray()) 
.ToList(); 

    JavaScriptSerializer serializer = new JavaScriptSerializer(); 
    return serializer.Serialize(result); 

    //--------------another method------------ 
    //ArrayList arr = new ArrayList(); 
    //List<ArrayList> list = new List<ArrayList>(); 

    //foreach (DataRow row in table.Rows) 
    //{ 
    // arr = new ArrayList(); 
    // foreach (DataColumn col in table.Columns) 
    // { 
    //  arr.Insert(col.Ordinal, row[col]); 
    // } 

    //  list.Add(arr); 
    //} 

    // JavaScriptSerializer serializer = new JavaScriptSerializer(); 
    // return serializer.Serialize(list); 


}