mhe*_*all 7 c# arrays json datatables json.net
默认情况下,DataTables Ajax期望JSON数据是一个数组数组.
使用JSON.Net
是可以通过属性/设置将集合序列化为数组而不是对象数组,或者是否必须通过自定义完成JsonConverter
.我试图序列化的对象如下:
public class DeviceIndex
{
public int Id { get; set; }
[Display(Name = "Asset Tag")]
public string AssetTag { get; set; }
[Display(Name = "Lease End")]
[DataType(DataType.Date)]
public DateTime LeaseEndDate { get; set; }
public string Type { get; set; }
[Display(Name = "Operating System")]
public string OperatingSystem { get; set; }
public string Model { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的控制器动作如下:
public IActionResult IndexJson()
{
var model = _db.Devices.Select(d => new DeviceIndex { ... }).ToList();
return Content(JsonConvert.SerializeObject(new { data = model }), "application/json");
}
Run Code Online (Sandbox Code Playgroud)
哪个输出JSON:
{
"data": [
{
"Id": 1649,
...
},
{
"Id": 703,
...
}
]
}
Run Code Online (Sandbox Code Playgroud)
虽然我期望的结果如下:
{
"data": [
[
"1649",
...
],
[
"703",
...
]
]
}
Run Code Online (Sandbox Code Playgroud)
我以为我可以为我的集合使用JsonArray属性,但它不会改变输出.
[JsonArray]
public class DevicesIndex: IEnumerable<DeviceIndex>
{
List<DeviceIndex> devices;
public IEnumerator<DeviceIndex> GetEnumerator()
{
return devices.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
Run Code Online (Sandbox Code Playgroud)
看起来自定义JsonConverter
是建议的方法
public class DeviceIndexJsonConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return objectType == typeof(DeviceIndex);
}
public override object ReadJson(JsonReader reader,
Type objectType,
object existingValue,
JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override void WriteJson(JsonWriter writer,
object value,
JsonSerializer serializer)
{
if (value == null) return;
writer.WriteStartArray();
var properties = value.GetType().GetProperties();
foreach (var property in properties)
writer.WriteValue(value.GetType().GetProperty(property.Name).GetValue(value));
writer.WriteEndArray();
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4702 次 |
最近记录: |