C# SerializeObject读取结构,但不读取值
我尝试了这段源代码(基于NewtonSoft的JSON NuGet库),用于将JSON文件读入JSON对象:C# SerializeObject读取结构,但不读取值,c#,json,json.net,C#,Json,Json.net,我尝试了这段源代码(基于NewtonSoft的JSON NuGet库),用于将JSON文件读入JSON对象: string str_File_Content = File.ReadAllText(openFileDialog1.FileName); Rootobject existing_root = JsonConvert.DeserializeObject<Rootobject>(str_File_Content); existing_root监视窗口中的摘录: Expecte
string str_File_Content = File.ReadAllText(openFileDialog1.FileName);
Rootobject existing_root = JsonConvert.DeserializeObject<Rootobject>(str_File_Content);
existing_root
监视窗口中的摘录:
Expected :existing_root.project.commonDESCRIPTION : Some information
Real result :existing_root.project.commonDESCRIPTION : null
如何使
JsonConvert.DeserializeObject()
不仅处理结构,而且处理值?您的json属性名称包含“.”符号,该符号对于C#属性名称无效,因此您可以指定在(反)序列化过程中使用的正确名称:
公共类项目
{
[JsonProperty(“common.DESCRIPTION”)]
公共字符串commonDESCRIPTION{get;set;}
}
您的json属性名称包含“.”符号,该符号对于C#属性名称无效,因此您可以指定正确的名称,以便在(反)序列化期间使用:
公共类项目
{
[JsonProperty(“common.DESCRIPTION”)]
公共字符串commonDESCRIPTION{get;set;}
}
这确实有效,但显然我的同事在JSON文件的每个属性中都添加了一个点。您知道Web Essentials(我使用了他们的“Paste special,Paste JSON as Class”功能)添加这个[JsonProperty(“…”)的方法吗
line automatically?@Dominique我个人会研究Json.NET的内部结构,以便在反序列化过程中自动完成。一种方法是实现自定义,或者甚至更好-自定义确实有效,但显然我的同事在Json文件的每个属性中都添加了一个点。你知道Web Essentials的方法吗(我使用了他们的“粘贴特殊,将JSON粘贴为类”功能)来添加这个[JsonProperty(“…”)
line automatically?@Dominique我个人会研究Json.NET的内部结构,以便在反序列化过程中自动完成。一种方法是实现自定义,或者甚至更好-自定义。很可能存在类型不匹配问题,Json数据无法转换为对象中的类型,在这种情况下,它将保留为空。我需要查看json和Rootobject
的定义才能确定。@YosefBernal:没有类型不匹配的问题,Stron大师已经给出了正确的答案,但我仍然面临一个额外的问题,正如他在回答中的评论所述。你有什么想法吗?很可能是类型不匹配的问题json数据无法转换为对象中的类型,在这种情况下,它将保留为null。我需要查看json和Rootobject
的定义才能确定。@YosefBernal:没有类型不匹配,Stron大师已经给出了正确的答案,但我仍然面临一个额外的问题,如中所述对他的回答的评论。你有什么想法吗?
Expected :existing_root.project.commonDESCRIPTION : Some information
Real result :existing_root.project.commonDESCRIPTION : null