关于Json反序列化的问题

Imcx 2015-08-01 04:23:52
先容我吐槽一下,跟别人家接口对接,响应是json格式的字符串,我这边直接用的Newtonsoft.Json这个进行反序列化,于是乎返回结果实体我就写了个固定的嘛,结果他们居然偷偷加了2个字段。。。我这边没记录下来(怪我咯)


我想问的问题是:
1.这个类库里有方法可以自己创建一个类吗?就是不用去另外写一个,根据json串自己创建一个类,返回给我这个类的实体

2.我另一个想法就是自己写个方法把json转成键值对那样存个列表里,理论上这样做别人随便怎么改json内容都可以全部保存到,不知道可行否?
...全文
105 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
showjim 2015-08-01
  • 打赏
  • 举报
回复
引用 5 楼 Imcx_ 的回复:
[quote=引用 3 楼 sbwwkmyd 的回复:] 看起来你不需要类型,直接保存JSON字符串。
不是的,有些值是需要处理的,转类型只是为了方便取值[/quote] 保存JSON并不影响你使用现在定义的类来处理数据。
Imcx 2015-08-01
  • 打赏
  • 举报
回复
引用 6 楼 sp1234 的回复:
你用 Newtonsoft.Json 把人家给你的字符串反序列化为你的实体(没有那2个字段),你就知道什么叫做规范了。规范不是你来说的,是 Newtonsoft.Json 这类流行工具才真正遵守的。
我是百度搜到一个BeJSON的在线工具才有这个疑问的,他们是根据什么来判断JSON串是否合法规范的呢?
Imcx 2015-08-01
  • 打赏
  • 举报
回复
引用 4 楼 sp1234 的回复:
人家增加几个字段怎么了?你定义的实体没有这些字段就不能反序列化了吗?看来并没有真正使用 Newtonsoft.Json,把时间都用来盯着人家“有没有偷偷增加2字段”上了。
不是这样的,我表达的不是不能反序列化,而是我用一个固定的类的时候无法获得新加入的字段。 ps:难道每次有修改不应该主动通知对方或者重新写一个文档吗?
  • 打赏
  • 举报
回复
引用 1 楼 Imcx_ 的回复:
容我再问个问题,怎么判断一个json串是否符合规范?我自己用正则匹配的,但是似乎有些问题
你用 Newtonsoft.Json 把人家给你的字符串反序列化为你的实体(没有那2个字段),你就知道什么叫做规范了。规范不是你来说的,是 Newtonsoft.Json 这类流行工具才真正遵守的。
Imcx 2015-08-01
  • 打赏
  • 举报
回复
引用 3 楼 sbwwkmyd 的回复:
看起来你不需要类型,直接保存JSON字符串。
不是的,有些值是需要处理的,转类型只是为了方便取值
引用 2 楼 qwertxp 的回复:
dynamic obj = JsonConvert.DeserializeObject(jsonString); 使用动态对象就行了,随便对方怎么改。
我先试试
  • 打赏
  • 举报
回复
引用 楼主 Imcx_ 的回复:
先容我吐槽一下,跟别人家接口对接,响应是json格式的字符串,我这边直接用的Newtonsoft.Json这个进行反序列化,于是乎返回结果实体我就写了个固定的嘛,结果他们居然偷偷加了2个字段。。。我这边没记录下来(怪我咯)
人家增加几个字段怎么了?你定义的实体没有这些字段就不能反序列化了吗?看来并没有真正使用 Newtonsoft.Json,把时间都用来盯着人家“有没有偷偷增加2字段”上了。
showjim 2015-08-01
  • 打赏
  • 举报
回复
看起来你不需要类型,直接保存JSON字符串。
qwertxp 2015-08-01
  • 打赏
  • 举报
回复
dynamic obj = JsonConvert.DeserializeObject(jsonString); 使用动态对象就行了,随便对方怎么改。
Imcx 2015-08-01
  • 打赏
  • 举报
回复
容我再问个问题,怎么判断一个json串是否符合规范?我自己用正则匹配的,但是似乎有些问题

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧