ASP.NET Web.ApI添加我没有得到的东西

时间:2012-12-29 02:02:15

标签: asp.net-mvc-4 asp.net-web-api

出于某种原因,我的简单.getJSON方法是在我的json中添加一些额外的东西,我没有得到。我想我做了一个非常简单的实现。下面是JSON和我的JavaScript。

这就是k__BackingField。是谁帮助了我?

 [{"<CodeCampYearId>k__BackingField":7,"<Attendeesid>k__BackingField":1124,"<SessionLevel_id>k__BackingField":2,"<SponsorId>k__Ba    



$(document).ready(function () {
        // Send an AJAX request
        $.getJSON("api/session/GetAll",
        function (data) {
            // On success, 'data' contains a list of products.
            $.each(data, function (key, val) {

                //debugger;

                // Format the text to display.
                //var str = val.Name + ': $' + val.Price;
                var str = 'abcd';

                // Add a list item for the product.
                $('<li/>', { text: str })
                .appendTo($('#products'));
            });
        });
    });

2 个答案:

答案 0 :(得分:8)

您的课程很可能[Serializable]导致字段序列化。你可以:

  • 删除[Serializable]属性
  • 或者让JSON格式化程序忽略此行的[Serializable]语义:

    (DefaultContractResolver)config.Formatters.JsonFormatter.
    SerializerSettings.ContractResolver).IgnoreSerializableAttribute = true;
    

答案 1 :(得分:3)

就我而言,事实证明我需要将[DataContract]添加到班级和每个属性[DataMember]

Youssef上面的评论提醒我这是一个序列化问题,所以谢谢你。 但是这个建议无法解决。

我正在使用此项目的项目可能有较旧的NewtonSoft serializer,但这可能会导致问题。我现在仍然拥有[serializable]属性,只要我在每个属性中包含[DataContract][DataMember],它就会像我期望的那样工作。