c# - 将 List<CustomObject> 转换为 JSON

标签 c# json

我有一个设施类型列表,下面是类。

我想获取包含带参数对象的列表,并将该数据序列化为 json。

我当前实现的问题是我得到一个如下所示的列表:[]、[]、[]、[]、[] ....但是我的对象 其中的数据,我可以像这样访问:_facility[0].FacilityName_facility[0].FacilityId。但是当我序列化它时,我没有得到这些值。

我如何深入获取这些数据并将其序列化?

设施.cs

public class Facility : List<Facility>
{
    [Required]
    [Display(Name = "Facility")]
    public string FacilityName { get; set; }
    public string FacilityIdSource { get; set; }

    public Facility()
    {
        // Default Constructor
    }

    public Facility(string facilityName, string facilityIdSource)
    {
        this.FacilityName = facilityName;
        this.FacilityIdSource = facilityIdSource;
    }
}

调用以填充 Facility 类的代码

 public async Task<string> FacilitiesAsync()
    {
        ViewBag.SyncOrAsync = "Asynchronous";
        var service = new FacilitiesService();

        this._facilities = new List<Facility>();

        _facilities = await service.GetFacilitiesBySourceDbAsync("param");

        string json = "";

        for (int i = 0; i < _facilities.Count; i++)
        {
            json += JsonConvert.SerializeObject(_facilities[i].FacilityName);
        }

        return json;
    }

现在我在我的 jQuery 中的完整函数的警告框中看到了 json。如何将此分配给 availableTags 数组?

<script type="text/javascript">
    $(function() {
    var result = null;
    $.ajax({
        beforeSend: function () {
            alert("Testing");
        },
        url: "FacilitiesAsync",
        success: function (data) {
            result = data;
        },
        complete: function () {
            alert(result);
        }
    });
});

$(function () {
    var availableTags = [
        // Place results from JSON here
    ];
    $("#tags").autocomplete({
        source: availableTags
    });
</script>

最佳答案

默认序列化程序不会序列化实现 ICollection 的对象的属性。

来自介绍 XML 序列化的文章:

http://msdn.microsoft.com/en-us/library/182eeyhh(v=vs.110).aspx

可以序列化的项目

可以使用 XmLSerializer 类序列化以下项目:

  • 公共(public)类的公共(public)读/写属性和字段。
  • 实现 ICollection 或 IEnumerable 的类。

注意:只有集合被序列化,而不是公共(public)属性。

  • XmlElement 对象。
  • XmlNode 对象。
  • 数据集对象。

DataContractSerializer 应该正确处理这个问题。

关于c# - 将 List<CustomObject> 转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19987704/

相关文章:

c# - 使用 JSON.Net 保留继承的类类型

c# - 使 Refit 自动在查询字符串中提供参数

c# - 如何处理 .NET 下未记录的 API/框架?

c# - 创建任务计划程序

javascript - 如何轻松测量 JSON 对象的复杂性?

javascript - 如何在 java 脚本对象 ES5 中分组和合并

c# - 如何在线程之间传递值?

c# - 代码隐藏中的数据绑定(bind)

java - YouTube API Auth 类中的 Nullpointer 异常 - 使用 Java 上传视频

ios - JSON 字符串编码 - 混淆