=波波日志 > Asp.Net/C#/WCF > Json.NET DeserializeObject could not find member 'xxx' on object of type 'RuntimeType'=
Json.NET DeserializeObject could not find member 'xxx' on object of type 'RuntimeType'
当使用json.net的方法DeserializeObject反序列化一个json格式的字符串生成对应的C#对象时,一定要注意JSON格式的字符串的属性部分一定要区分大小写,如果不区分大小写,就会出现“could not find member 'xxx' on object of type 'RuntimeType'”的错误。
这个是因为低版本的json.net,如1.3,调用DeserializeObject时,如果json格式的字符串属性值和C#对象属性的大小写不匹配时,就会出现“could not find member 'xxx' on object of type 'RuntimeType'”的错误了。升级成高版本的JSON.NET,如4.0,属性部分不区分大小。
但是要注意DeserializeObject/SerializeObject方法从 Newtonsoft.Json.JavaScriptConvert名字空间下面转换到了Newtonsoft.Json.JsonConvert名字空间下面。如果不注意,直接使用,会编译出错,找不到JavaScriptConvert名字空间。
详细示例代码参考下面的文章
JSON.NET使用示例
下面的示例注释的部分是错误的,没有区分大小写,导致编译出错
这个是因为低版本的json.net,如1.3,调用DeserializeObject时,如果json格式的字符串属性值和C#对象属性的大小写不匹配时,就会出现“could not find member 'xxx' on object of type 'RuntimeType'”的错误了。升级成高版本的JSON.NET,如4.0,属性部分不区分大小。
但是要注意DeserializeObject/SerializeObject方法从 Newtonsoft.Json.JavaScriptConvert名字空间下面转换到了Newtonsoft.Json.JsonConvert名字空间下面。如果不注意,直接使用,会编译出错,找不到JavaScriptConvert名字空间。
详细示例代码参考下面的文章
JSON.NET使用示例
下面的示例注释的部分是错误的,没有区分大小写,导致编译出错
+展开
-C#
//使用1.3版本的json.net,属性一定要注意大小写,要不会出现Could not find member 'firstName' on object of type 'RuntimeType'错误
/*
string strJson = "{\"firstName\":\"John\",\"lastName\":\"Doe\"}";//注意一定要区分属性部分的大小写
employee em = (employee)Newtonsoft.Json.JavaScriptConvert.DeserializeObject(strJson, typeof(employee));
context.Response.Write("JSON格式的字符串生成对应的类实体:" + em.FirstName + "---" + em.LastName);
context.Response.Write("br/br/类实体序列化成JSON格式的字符串:" + Newtonsoft.Json.JavaScriptConvert.SerializeObject(em));*/
string strJson = "{\"firstName\":\"John\",\"lastName\":\"Doe\"}";
//使用新版本的json.net,如果4.0,json格式的字符串属性部分可以不区分大小写,不会出现Could not find member 'firstName' on object of type 'RuntimeType'错误
employee em = (employee)Newtonsoft.Json.JsonConvert.DeserializeObject(strJson, typeof(employee));
context.Response.Write("JSON格式的字符串生成对应的类实体:" + em.FirstName + "---" + em.LastName);
//序列化时,会自动转换成对应的C#对象的属性,区分大小写
context.Response.Write("<br/><br/>类实体序列化成JSON格式的字符串:" + Newtonsoft.Json.JsonConvert.SerializeObject(em));
/*
string strJson = "{\"firstName\":\"John\",\"lastName\":\"Doe\"}";//注意一定要区分属性部分的大小写
employee em = (employee)Newtonsoft.Json.JavaScriptConvert.DeserializeObject(strJson, typeof(employee));
context.Response.Write("JSON格式的字符串生成对应的类实体:" + em.FirstName + "---" + em.LastName);
context.Response.Write("br/br/类实体序列化成JSON格式的字符串:" + Newtonsoft.Json.JavaScriptConvert.SerializeObject(em));*/
string strJson = "{\"firstName\":\"John\",\"lastName\":\"Doe\"}";
//使用新版本的json.net,如果4.0,json格式的字符串属性部分可以不区分大小写,不会出现Could not find member 'firstName' on object of type 'RuntimeType'错误
employee em = (employee)Newtonsoft.Json.JsonConvert.DeserializeObject(strJson, typeof(employee));
context.Response.Write("JSON格式的字符串生成对应的类实体:" + em.FirstName + "---" + em.LastName);
//序列化时,会自动转换成对应的C#对象的属性,区分大小写
context.Response.Write("<br/><br/>类实体序列化成JSON格式的字符串:" + Newtonsoft.Json.JsonConvert.SerializeObject(em));
类别:Asp.Net/C#/WCF 作者:波波 日期:2011-04-20 【评论:0】
相关文章
- ·PHP“Cannot use object of type stdClass as array”
- ·apache Could not reliably determine the server‘s fully qualified domain name
- ·JSON.NET使用示例
- ·clipboardData Object
- ·TextRange Object
- ·selection Object
- ·Document Object Model Events
- ·javascript操作JSON
- ·让webservice输出json
- ·PHP JSON使用教程
- ·object和embed的区别
- ·设计模式(17)-Chain of Responsibility Pattern
暂时没有评论!
发表留言
热门博文
- IE里Cookie跨域不能读取
- web服务因URL意外地以/**结束,请求格式无法识别
- 去掉隐藏asp.net编译出错aspxerrorpath错误参数
- 解决asp.net验证视图状态 MAC 失败
- 找不到System.Web.Script.Services.ScriptService
- 在aspx,ashx页面挂起线程执行
最新博文
- WCF利用限流(Throttling)控制并发访问[下篇]
- WCF利用限流(Throttling)控制并发访问[上篇]
- ConcurrencyMode.Multiple模式下的WCF服务同步上下文对并发的影响[下篇]
- ConcurrencyMode.Multiple模式下的WCF服务同步上下文对并发的影响[上篇]
- WCF基于ConcurrencyMode.Reentrant模式下的并发控制机制
- C#如何设置标记方法等为否决的不可用
随机博文
- asp.net 编译错误类型“同时存在于”不同的dll中
- C#实现dos ping 命令
- cookie,domain的设置读取删除关系
- 11.2 自定义控件
- C#汉字Unicode编码相互转换
- C# WinForm实现文件拖入拖出窗体事件
广告商赞助

