我有以下要反序列化为对象的JSON文件
{
"InputFileFolder": "D:\\MontlyTransactions\\",
"TransactionGroups":
[
{
"Name": "Income",
"FilterString": "Type=@0 and Amount>@1 and (Description.Contains(@2) or Description.Contains(@3))",
"Arguments": ["BAC",0,"REF1","REF2"]
},
{
"Name": "Household Bills",
"FilterString": "Type=@0 and Amount<@1 and Amount.Contains(@2)",
"Arguments": ["S/O",0,[16600,72000,15000]]
}
]
}
我要转换为的对象如下:
public class Configuration
{
public string InputFileFolder { get; set; }
public TransactionGroup[] TransactionGroups { get; set; }
}
public class TransactionGroup
{
public string Name { get; set; }
public string FilterString { get; set; }
public string[] Arguments { get; set; }
}
使用以下代码段:
this.Configuration = JsonConvert.DeserializeObject<Configuration>(configurationString);
但是第二个参数中的数组作为Newtonsoft.Json.Linq.Array而不是我期望的object []返回。
任何建议将不胜感激。
答案 0 :(得分:0)
您需要首先检查Json中的Arguement元素。例如,根据OP中给出的Json
'Arguments': ['S/O',0,[16600,72000,15000]]
和
public class TransactionGroup
{
public string Name { get; set; }
public string FilterString { get; set; }
public object[] Arguments { get; set; } // Change here
}
您可以看到,涉及的元素不是字符串数组。实际上,它还包含字符串,数字和数字子数组。
因此您需要将类定义更改为
try {
MongoCollection<Document> collection = vars.getObject("collection");
Document result = collection.find(eq("_id",'completeValue').first());
log.info (result)
if(result !=null){
vars.put ("Employeeoid", result.get("EmployeeOID").tointeger());
log.info (Employeeoid)
return "Employeeoid=" + Employeeoid;
}
这将帮助您成功反序列化Json。
答案 1 :(得分:0)
即使将数据类型更改为:@foreach(var course in Model)
{
<b>
<b>Course ID : @course.CourseID</b>
<b>Course ID : @course.Day</b>
<b>Course ID : @course.Hour</b>
</b>
}
,它也会被序列化为public object[] Arguments { get; set; }
。但是,您可以使用JArray
的{{1}}方法检查类型并转换回object[]
或string[]
,如下所示:
ToObject