默认情况下,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 { …Run Code Online (Sandbox Code Playgroud) 我想将二维数组反序列化为.net对象的集合.原因是,我的用户可以更容易地在输入文件中使用数组语法.所以我只想将数组的索引映射到我的目标类型的特定属性.
EG用:
[
["John", "Smith", "23"],
["Paula", "Martin", "54]
]
Run Code Online (Sandbox Code Playgroud)
我会得到一个人的两个实例:
public class Person {
public string First {get;set;}
public string Last {get;set;}
public string Age {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
其中内部数组的索引0映射到First,索引1映射到Last,索引2映射到Age;
有没有办法扩展Json.NET,以便我可以在反序列化期间进行映射,以便隐藏实现细节?我一直在玩一个自定义JsonConverter但我没有找到关于如何使用它的很多信息.
编辑:具体来说,我不确定是否JsonConverter正确使用,我无法弄清楚如何实现CanConvert以及如何使用传递给ReadJson方法的参数.
我有一个有效的 JSON 对象,其中包含一个 JSON 数组。JSON 数组没有花括号,其中包含一个逗号分隔的混合类型列表。它看起来像这样:
{
"ID": 17,
"Days": 979,
"Start_Date": "10/13/2012",
"End_Date": "11/12/2012",
"State": "",
"Page": 1,
"Test": "Valid",
"ROWS": [
[441210, "A", "12/31/2009", "OK", "Done", "KELLEY and Co'", "12/31/2009", "06/29/2010", "TEXAS", "Lawyers", 6, "", "<img src=\"/includes/images/Icon_done.gif\" border=\"0\" alt=\"Done\" title=\"Done\" />"],
[441151, "B", "12/31/2009", "No", "In-process", "Sage & Co", "12/31/2009", "06/29/2010", "CALIFORNIA", "Realtor", 6, "", "<img src=\"/includes/images/Icon_InProcess.gif\" border=\"0\" alt=\"In Process\" title=\"In Process\" />"]
]
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个类来反映 JSON 结构,其中包含一个用于复杂数组的列表:
class myModel
{
public int ID { get; set; } …Run Code Online (Sandbox Code Playgroud)