如何访问JSON数组格式的String

时间:2010-03-20 09:48:17

标签: jquery json

我有一个asp.net页面,它将对象列表作为json字符串返回给ajax请求。字符串如下:

[
    {"Name":"Don","Age":23,"Description":"Tall man with no glasses"}
    ,{"Name":"Charlie","Age":24,"Description":"Short man with glasses"}
]

我想单独访问每个字段,例如人名,年龄,描述等。

我该怎么做?我正在使用JQuery进行客户端脚本编写。

为了进一步说明,这里是服务器端C#代码 -

protected void Page_Load(object sender, EventArgs e)
{
    if (Request["field1"] != null)
    {            
        createPersonList();
    }
}

private void createPersonList()
{
    List<Person> PersonList = new List<Person>();

    Person Atiq = new Person("Atiq Hasan Mollah", 23, "Whassap Homie");
    Person Sajib = new Person("Sajib Mamud", 24, "Chol kheye ashi");

    PersonList.Add(Atiq);
    PersonList.Add(Sajib);

    string json = JsonConvert.SerializeObject(PersonList);

    Response.Clear();
    Response.Write(json);
    Response.End();
}

客户端javascript代码如下 -

$(function()
{   
    $("#SimpleButton").click(function()
    {

        $.post("Default.aspx", {field1: $("#field1").val()},function(data)
        {
            data = $.trim(data);
            $("#field2").val(data);

            var myObject = eval('(' + data + ')');

            $(data).each(function(index, person)
            {
                alert(  'Name: ' + person.Name + 
                        ' Age: ' + person.Age + 
                        ' Description: ' + person.Description
                    );
            });
        });
    });
});

现在,如果我自己不使用“eval”,那么如何从服务器端传递arraylist然后使用javascript解析呢?

2 个答案:

答案 0 :(得分:2)

您可以要求jQuery自动解析JSON并返回JavaScript对象而不是字符串:

var people = $.getJSON('http://example.com/path/to/page');

如果您想使用POST而非GET,则可以提供数据类型作为第四个参数:

$.post("Default.aspx", {field1: $("#field1").val()}, function(data) { ... }, "json");

然后您可以像访问普通对象一样访问它:

$.each(people, function(function (i, person) {
    $('#people').append($('<p>').text(person.Name));
}

答案 1 :(得分:1)

假设您已经拥有了人员数组,您可以使用each方法遍历元素:

var persons = [
    {"Name":"Don","Age":23,"Description":"Tall man with no glasses"},
    {"Name":"Charlie","Age":24,"Description":"Short man with glasses"}
];

$(persons).each(function(index, person) {
    alert('Name: ' + person.Name + 
          ' Age: ' + person.Age + 
          ' Description: ' + person.Description
    );
});