首页
学习
活动
专区
工具
TVP
发布

利用Newtonsoft.Json实现json数据的序列化与反序列化操作

在用Unity做开发的时候,一些配置表,服务器通信的数据交换等,多以json格式实现。其中常用到的json解析方式包括以下几种:

1.Unity自带的API:JsonUtility类

JsonUtility.FromJson(json);将一个json字符串解析成一个类对象

JsonUtility.ToJson;将一个类对象转化成一个json字符串

通过上述描述,可知使用该类是需要相应的有一个类并且这个类是标记了[Serializable],类字段也是必须是可序列化的,私有的字段或者被标记[NonSerialized]的字段将被忽略。

切记:json字符串的key需要和类字段的名字完全一样

不能解析复杂嵌套的json字符串

2. 使用第三方的LitJson插件

JsonMapper.ToObject(json);将一个json字符串解析成一个类对象

JsonMapper.ToJson;将一个类对象转化成一个json字符串

还提供了stream的方式处理JSON数据,提供的接口是jsonreader和jsonwriter。LitJson这个插件功能很强大可以完成更复杂的json字符串的解析。但是也有个缺点就是json字符串中的key也需要和类字段的名字完全一致,如果不对应的话会解析失败。

3.第三种方式就是今天要说的Newtonsoft.Json即Json.Net

JsonConvert.DeserializeObject(json);将一个json字符串解析成一个类对象

JsonConvert.SerializeObject;将一个类对象转化成一个json字符串

Json.Net功能强大,可以完成复杂的json字符串解析,并且性能相当出色。并且上面两种方式存在的缺点它都不存在:

比如json字符串中不存在Age,但是类有Age字段,在反序列化的时候对象的Age会初始化空,但是不会报错;

再比如json字符串中存在name,而类字段是Name,也完全可以完成反序列化,会把name赋值给对象的Name字段;

再比如json字符串中存在int id,但是类字段是string id,也就是说只要两者的类型可以转化,则完全不影响反序列的完成。

正是这些特性,使得使用Json.Net来完成json字符串的解析工作,变得更加的简单方便。

更多特性可以访问官网查看:https://www.newtonsoft.com/json

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180705G1EM1Z00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券