簡體   English   中英

訪問使用JSON發送的數組

[英]Accessing an array sent using JSON

我有以下數組

 var array = []; // It has (48.154176701412744,11.551694869995117),(48.15131361676726,11.551694869995117),(48.15555092529958,11.549291610717773) saved in it.

那就是我如何通過ajax將其發送到我的aspx頁面

 function result() {
     var jsonText = JSON.stringify({ list: array });
    $.ajax({
        url: "test.aspx/Demo", type: "POST", dataType: "json",
        contentType: "application/json; charset=utf-8",
        data: jsonText,
        success: function (data) { alert("it worked"); },
        error: function () { alert("Uh oh"); }
    });
    return false;
}

那就是我如何在aspx中訪問它

public static void Demo(double[] list)
{

}

但是,當我嘗試打印它時,它會顯示“ 0 0 0”。 當我嘗試像

public static void Demo(string[] list)
{

}

上面的方法甚至不接受JSON對象。 那么,由於該方法甚至不接受JSON對象,應該使用什么適當的數據類型來訪問此數組? 還是告訴我在JS中拆分(xyz,xyz),(xyz,xyz)之類的字符串的方法,以便我可以將其轉換為字符串並以JSON作為字符串發送?

我的猜測是您為Web方法接受的參數類型不正確。 將您的Web方法的參數類型更改為List<Dictionary<string,string>> ,這樣大多數對象將被正確地反序列化,尤其是在您的示例中為JSON類型的情況下。

尚未使用Google Maps API的經驗,快速搜索顯示它看起來可能與以下幾方面相似:

var coord = { "lat" : "xx.xxxxxxx", "long" : "yy.yyyyyyyy" };

如果確實如此,則類型為List<Dictionary<string,string>>將正確反序列化通過AJAX調用傳遞的JSON數組。

以下是如何遍歷提供給您的Web方法的列表並構建所有坐標的字符串的示例:

StringBuilder sb = new StringBuilder();
foreach (Dictionary<string, string> coord in list)
{
    sb.Append(string.Format("({0},{1})", coord["lat"], coord["long"]));
}

當然,您可以更改構建字符串的格式以適合您的要求。 同樣,假設是字典使用“ lat”和“ long”鍵反序列化,但我不確定。 希望能幫助到你!

用這個改變你的數組

var array = [[48.154176701412744,11.551694869995117],[48.15131361676726,11.551694869995117],[48.15555092529958,11.549291610717773]];

希望這會有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM