访问JSON响应中的字段

Accessing fields in a JSON response

本文关键字:字段 响应 JSON 访问      更新时间:2023-09-26

我有一个这样定义的类:

// the Widget class has lots of properties I don't want to display
// so I use the displayWidget class to carry just what I want to display
public class displayWidget
{
    public string WidgetId {get; set;}
    public string Description {get; set;}
    public displayWidget(Widget widget)  
    {
        WidgetId = widget.WidgetId;
        Description = widget.Description;
    }
}

我有一个ActionResult方法,它以::结尾

var widgets = new List<displayWidget>();
foreach (var widget in matchingWidgets)
{
    widgets.Add(new displayWidget(widget));
}
return Json(widgets);

我的问题是,我不知道如何访问ajax内部的WidgetId和Description属性。done处理程序:

.done(
    function(response) {
        $('#widgetSection').html('');
        var html = '';
        var jsonData = JSON.parse(response);
        $.each(jsonData, 
            function (index, element) 
            { 
                $('body').append($('<div>', { text: element.WidgetId })); 
                $('body').append($('<div>', { text: element.Description }));
            });
    }
)

.each函数内部应该有什么来输出WidgetId和Description?

ActionResult返回一个数组,请尝试:

element[0].WidgetId

这将返回第一个结果,如果需要,您可以轻松地循环列表。

编辑

正如@StephenMuecke所提到的,您不需要在这里使用JSON.parse,因为您已经返回了JSON数据,所以这样的东西就足以遍历结果:

.done(
    function(response) {
        $('#widgetSection').html('');
        $.each(response, function (index, element) { 
            $('body').append(
                $('<div></div>').text(element.WidgetId )
            )
        });
    }
)