如果名称略有不同,我该如何使用 JObject?
How do I use JObject if the names are slightly different?
我有一个来自 JSON.NET 的 JObject,其中包含以下内容:
var jOBject = {"schedule.ID" : 1, "schedule.Name" : "NameSchedule"}
以上是我在视图中使用 Javascript 到 return 的 MVC 表单中文本框的 ID 和值得到的结果。
在我使用 C# 的控制器中,我想将其转换为具有以下属性的计划对象:
public class Schedule {
public int ID {get;set;}
public string Name {get;set;}
}
我做不到
Schedule sched = jsonObject.toObject<Schedule>();
因为名称略有不同,因为 Jobject 上的属性前缀为 'schedule'。
是否有查询或方法可以让我删除 jsonObject 中的 'schedule',这样我就可以在一行中进行简单的转换?
要在 JSON 中使用不同的键名,您可以使用 DataContract
和 DataMember
属性修饰 C# class。
[DataContract]
public class Schedule {
[DataMember("schedule.ID")]
public int ID { get; set; }
[DataMember("schedule.Name")]
public string Name { get; set; }
}
让它工作的一个简单方法是使用 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);
JObject scheduleObj={schedule:{"ID" : 1, "Name" : "NameSchedule"}}
JsonSerializer seria = new JsonSerializer();
Schedule oSchedule = new Schedule();
if (ScheduleObj["Schedule"] != null)
{
oSchedule = (Schedule)seria.Deserialize(new JTokenReader(ScheduleObj["Schedule"]), typeof(Schedule));
}
我有一个来自 JSON.NET 的 JObject,其中包含以下内容:
var jOBject = {"schedule.ID" : 1, "schedule.Name" : "NameSchedule"}
以上是我在视图中使用 Javascript 到 return 的 MVC 表单中文本框的 ID 和值得到的结果。
在我使用 C# 的控制器中,我想将其转换为具有以下属性的计划对象:
public class Schedule {
public int ID {get;set;}
public string Name {get;set;}
}
我做不到
Schedule sched = jsonObject.toObject<Schedule>();
因为名称略有不同,因为 Jobject 上的属性前缀为 'schedule'。
是否有查询或方法可以让我删除 jsonObject 中的 'schedule',这样我就可以在一行中进行简单的转换?
要在 JSON 中使用不同的键名,您可以使用 DataContract
和 DataMember
属性修饰 C# class。
[DataContract]
public class Schedule {
[DataMember("schedule.ID")]
public int ID { get; set; }
[DataMember("schedule.Name")]
public string Name { get; set; }
}
让它工作的一个简单方法是使用 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);
JObject scheduleObj={schedule:{"ID" : 1, "Name" : "NameSchedule"}}
JsonSerializer seria = new JsonSerializer();
Schedule oSchedule = new Schedule();
if (ScheduleObj["Schedule"] != null)
{
oSchedule = (Schedule)seria.Deserialize(new JTokenReader(ScheduleObj["Schedule"]), typeof(Schedule));
}