我有一个来自JSON.NET的JObject,其中包含以下内容:
var jOBject = {"schedule.ID" : 1, "schedule.Name" : "NameSchedule"}
以上是我使用Javascript在视图中返回MVC表单中的文本框的ID和值所得到的。
在我使用C#的控制器中,我想将其转换为具有以下属性的Schedule对象:
public class Schedule {
public int ID {get;set;}
public string Name {get;set;}
}
我无法做到
Schedule sched = jsonObject.toObject<Schedule>();
因为名称略有不同,因为Jobject上的属性前面带有'schedule'。
是否有查询或方法进行转换,允许我删除jsonObject中的'schedule',以便我可以在一行中进行简单转换?
答案 0 :(得分:2)
使其正常工作的一种简单方法是使用JsonProperty
attribute指定要映射到某个C#属性的JSON密钥:
public class Schedule
{
[JsonProperty("schedule.ID")]
public int ID {get;set;}
[JsonProperty("schedule.Name")]
public string Name {get;set;}
}
然后您可以使用JsonConvert.DeserializeObject
将JSON反序列化为Schedule
实例:
var schedule = JsonConvert.DeserializeObject<Schedule>(json);
答案 1 :(得分:0)
要在JSON中使用不同的键名,您可以使用DataContract
和DataMember
属性修饰C#类。
[DataContract]
public class Schedule {
[DataMember("schedule.ID")]
public int ID { get; set; }
[DataMember("schedule.Name")]
public string Name { get; set; }
}
答案 2 :(得分:0)
DECLARE @startingDate DATETIME, @searchDate DATETIME;
DECLARE @maxSoFar INT, @sum INT, @daysRange INT;
SET @startingDate = convert(datetime, '20150401', 110)
SET @searchDate = @startingDate;
SET @daysRange = 3;
SET @maxSoFar = 0;
WHILE GETDATE()> @searchDate
BEGIN
--PRINT @searchDate
--PRINT DATEADD(DAY,@daysRange,@searchDate)
SELECT @sum = SUM(SumAmount) FROM MyTable WHERE FileDate >= @searchDate AND FileDate <= DATEADD(DAY,@daysRange,@searchDate)
IF @sum > @maxSoFar
BEGIN
SET @maxSoFar = @sum;
END
SET @searchDate = DATEADD(DAY,1,@searchDate)
END