我有一个设施类型列表,下面是类。
我想获取包含带参数对象的列表,并将该数据序列化为 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/