如何解析随Braces返回的JSON数据

时间:2015-06-25 20:19:58

标签: jquery json web-services asmx

我正在查询应该从数据库返回当前用户数据的ASMX Web服务。在返回中我正确地返回数据,但每次我解析jSON;我收到了数据错误。 我已经发布了我的jQuery Call和WebService的返回。

我已经把它强化了,仍然无法解析数据......它似乎在抱怨周围的大括号。
========================
ASMX PSEUDO
========================

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public String GetLDAPUser(string sam)
{
    ArrayList objs = new ArrayList();
    string sql = @"***SELECT USERS FROM AD THROUGH OPENQUERY***";
    using (SqlConnection connection = new SqlConnection(VMDATA))
    {
        connection.Open();
        using (SqlCommand cmd = new SqlCommand(sql, connection))
        {
            //Parameters
            cmd.Parameters.AddWithValue("@sam", sam);
            using (SqlDataReader reader = cmd.ExecuteReader())
            {
                while (reader.Read()) 
                { 
                    objs.Add(new
                    {
                        Name = reader["Name"],
                        Login = reader["samAccountName"],
                        Mail = reader["Mail"],
                        DistinguishedName = reader["distinguishedName"],
                        DisplayName = reader["displayName"],
                        GivenName = reader["givenName"]
                    });
                }
            }
        }
    }
    return JsonConvert.SerializeObject(objs);
}

========================
jQuery CALL
========================

$(document).ready(function () {
    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "/apps/Webservices/wsUsers.asmx/GetUser",
        data: "{'user': 'jwg1'}",
        dataType: "json",
        success: function (data) {
            var obj = data.d;
            console.log(obj);
        }
    });
});

========================
JSON数据
========================

[
  {
    "Mail": "joe.garrett@rineco.com",
    "samAccountName": "jwg1",
    "distinguishedName": "CN=Joe Garrett,OU=obfuscated,DC=com",
    "givenName": "Joe",
    "displayName": "Joe Garrett",
    "Name": "Joe Garrett"
  }
]

1 个答案:

答案 0 :(得分:0)

正如depperm的评论所述,你可能想要做

var obj=data.d[0];

这将允许您通过执行

来访问其值
obj.Mail

obj.Name

我不确定为什么你的数据会带有out括号[],如果JSON只有1个成员,请考虑删除[]。那么您当前的代码将更有效地工作。