0

我正在尝试返回一个像这样的数组数组的 json 对象:

{
     'data': [[45,43,103],[34,43,230]]
}

在 .NET 4.0 中使用 asmx,如下所示:

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public string GetData() {
StringBuilder sb = new StringBuilder();
sb.Append("'Data':[");
sb.Append("[45,43,103],");
sb.Append("[34,43,230]");
sb.Append("]");
return sb.ToString();

使用 jQuery ajax 调用:

$.ajax({
    type: "POST",
    url: url,  //defined elsewhere
    data: "{}",
    dataType: 'json',
    contentType: "application/json; charset=utf-8",
    success: update,  

  });

function update(data)
{
 console.log (data.d[1][1]); //looking at second array second element
}

问题是 asmx 调用的响应看起来像这样,我的更新功能不起作用

{"d":"\u0027Data\u0027:[[45,43,50],[34,43,50]]"}

事情看起来不像它们被正确转义或格式化。看来我错过了什么。为什么'数据'仍然有'的unicode字符?我认为 ResponseFormat.Json 会处理一切以将其转换为 json 格式。

4

1 回答 1

1

您实际上不会返回包含数组数组的 json。'Data':[[45,43,50],[34,43,50]]您返回一个封装在 json 中的字符串 ( )。

2 你的方法有问题。

a)不要使用字符串操作手动形成 json

b)在您的方法中返回一个真实的对象而不是字符串

因此,将您的方法更改为如下所示应该可以

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public List<int[]> GetData()
{
    return new List<int[]>() { new[] { 45, 43, 103 }, new[] { 34, 43, 230 } };
}
于 2013-05-02T18:36:39.917 回答