C# 转换列表<;CustomObject>;到JSON
我有一个设备类型列表,类别如下 我想获取包含带有参数的对象的列表,并将该数据序列化为json 我当前实现的问题是,我返回的列表看起来像:C# 转换列表<;CustomObject>;到JSON,c#,json,C#,Json,我有一个设备类型列表,类别如下 我想获取包含带有参数的对象的列表,并将该数据序列化为json 我当前实现的问题是,我返回的列表看起来像:[]、[]、[]、[]、[]、[]、[]、[]、[]、[]…但是我的对象中包含了我可以访问的数据:\u facility[0]。FacilityName或\u facility[0]。FacilityId。但是当我序列化它时,我没有得到那些值 如何深入获取此数据并将其序列化 Facility.cs public class Facility : List<
[]、[]、[]、[]、[]、[]、[]、[]、[]、[]
…但是我的对象中包含了我可以访问的数据:\u facility[0]。FacilityName
或\u facility[0]。FacilityId
。但是当我序列化它时,我没有得到那些值
如何深入获取此数据并将其序列化
Facility.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;
}
}
公共类设施:列表
{
[必需]
[显示(Name=“Facility”)]
公共字符串设施名称{get;set;}
公共字符串FacilityIdSource{get;set;}
公共设施()
{
//默认构造函数
}
公共设施(字符串facilityName、字符串facilityIdSource)
{
this.FacilityName=FacilityName;
this.FacilityIdSource=FacilityIdSource;
}
}
调用以填充设备类的代码
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;
}
公共异步任务设施同步()
{
ViewBag.SyncOrAsync=“异步”;
var服务=新设施服务();
此._facilities=新列表();
_设施=等待服务。GetFacilitiesBySourceDbAsync(“参数”);
字符串json=“”;
对于(int i=0;i<\u facilities.Count;i++)
{
json+=JsonConvert.SerializeObject(_facilities[i].FacilityName);
}
返回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>
$(函数(){
var结果=null;
$.ajax({
beforeSend:函数(){
警报(“测试”);
},
url:“设施同步”,
成功:功能(数据){
结果=数据;
},
完成:函数(){
警报(结果);
}
});
});
$(函数(){
var availableTags=[
//将JSON的结果放在这里
];
$(“#标记”).autocomplete({
资料来源:availableTags
});
默认序列化程序不会序列化实现ICollection的对象上的属性
在介绍XML序列化的文章中:
可以序列化的项目
可以使用XmLSerializer类序列化以下项:
- 公共类的公共读/写属性和字段
- 实现ICollection或IEnumerable的类
- XmlElement对象
- XmlNode对象
- 数据集对象
DataContractSerializer应该正确处理此问题。作为调试步骤,请尝试使用
JavaScriptSerializer
。您是否得到了预期的结果?Facility:List
?这会伤到我的大脑:((但说真的,我不明白如何明智地将这样的类序列化为JSON;您可能有一个Facility
类,该类具有列表子类
属性)根据他的代码,设施似乎不能有子设施。设施似乎只有一个名称和id。您应该删除:List
部分。对于序列化,如果将集合作为只读属性包含,则会更简单,只要符合您的接口要求,我会尝试。