Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果名称略有不同,如何使用JObject?_Javascript_C#_Json_Model View Controller_Json.net - Fatal编程技术网

Javascript 如果名称略有不同,如何使用JObject?

Javascript 如果名称略有不同,如何使用JObject?,javascript,c#,json,model-view-controller,json.net,Javascript,C#,Json,Model View Controller,Json.net,我有一个来自JSON.NET的JObject,包含以下内容: var jOBject = {"schedule.ID" : 1, "schedule.Name" : "NameSchedule"} 以上是我从使用Javascript返回视图中MVC表单中文本框的ID和值中得到的 在使用C#的控制器中,我希望将其转换为具有以下属性的调度对象: public class Schedule { public int ID {get;set;} public string Nam

我有一个来自JSON.NET的JObject,包含以下内容:

var jOBject =  {"schedule.ID" : 1, "schedule.Name" : "NameSchedule"}
以上是我从使用Javascript返回视图中MVC表单中文本框的ID和值中得到的

在使用C#的控制器中,我希望将其转换为具有以下属性的调度对象:

public class Schedule {
     public int ID {get;set;}
     public string Name {get;set;}
 }
我做不到

Schedule sched = jsonObject.toObject<Schedule>();
Schedule sched=jsonObject.toObject();
因为Jobject上的属性前面有“schedule”,所以名称略有不同


是否有一种查询或转换方法允许我删除jsonObject中的“schedule”,这样我就可以在一行中完成简单的转换

要在JSON中使用不同的键名,可以使用
DataContract
DataMember
属性来修饰C#类

[DataContract]
public class Schedule {
     [DataMember("schedule.ID")]
     public int ID { get; set; }

     [DataMember("schedule.Name")]
     public string Name { get; set; }
 }

一种简单的方法是使用指定要映射到某个C#属性的JSON键:

public class Schedule 
{
     [JsonProperty("schedule.ID")]
     public int ID {get;set;}

     [JsonProperty("schedule.Name")]
     public string Name {get;set;}
}
然后,您可以使用
JsonConvert.DeserializeObject
将JSON反序列化为
计划
实例:

var schedule = JsonConvert.DeserializeObject<Schedule>(json);
var schedule=JsonConvert.DeserializeObject(json);

示例:

我认为您应该标记
java
而不是
javascript
“我有一个JSON示例对象,在javascript中包含以下内容:“这既不是有效的JSON,也不是有效的javascript”。@VigneswaranMarimuthu:不,那些类代码示例是C#,不是Java。JavaScript对象属性名中不能包含
字符,除非整个名称用引号括起来。您当前的示例抛出:Uncaught SyntaxError:Unexpected token
<代码>schedule.ID无效,
“schedule.ID”
有效。@T.J.Crowder根本没有使用C。感谢您让我知道:)实际上,
是JSON对象的keyAh中完全有效的字符是的,您是正确的。但是,当我回答时,密钥名称周围没有引号,这将是无效的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));
            }