北京网站建设价格天外链吧官网
- 作者: 五速梦信息网
- 时间: 2026年03月21日 10:05
当前位置: 首页 > news >正文
北京网站建设价格天,外链吧官网,校园网站建设多少钱,免费制作相册文章目录 起因前提优化1 合并对象优化2 第三方库以及处理方法的抉择1. 三方库Utf8Json ⚠️ 暂不可用有程序崩溃风险2. 三方库SimpleJSON ✅ 1.33s3. 系统库JsonUtility ⚠️ 不好用容易解析不出来4. System.Text.Json ✅ 1.4s4. Newtonsoft.Json改进处理 ✅ 1.33s #x1f3a… 文章目录 起因前提优化1 合并对象优化2 第三方库以及处理方法的抉择1. 三方库Utf8Json ⚠️ 暂不可用有程序崩溃风险2. 三方库SimpleJSON ✅ 1.33s3. 系统库JsonUtility ⚠️ 不好用容易解析不出来4. System.Text.Json ✅ 1.4s4. Newtonsoft.Json改进处理 ✅ 1.33s 总结 起因 起因是我们这边unity的loading页面加载时间过长所以就开始做loading页面的优化起初发现我们这边有个资源的json序列化需要花掉3s多的时间同时这块因为处理在主线程因此导致loading页面不但加载时间长而且还卡顿给用户造成了很不好的体验,所以在加载速度上这块是我们比较看重的指标。 前提 1. json文件大小1.5M 2. json层级为 data dataLists 在dataLists下面是我们需要解析的json内容。 优化1 合并对象 之前的处理是这样的 JObject jobject (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(strJson);as jobject[data][dataLists][a].ToObjectListA();bs jobject[data][dataLists][b].ToObjectListB();cs jobject[data][dataLists][c].ToObjectListC();…可能许多同学都爱这么写这样看着比较明了但是这块处理有性能问题性能问题在于ToObject方法会造成二次序列化因为JToken 内部保存的是 JSON 数据的 DOM 结构树状模型调用 ToObject() 会 1.把这部分 JToken 结构重新转换为 JSON 字符串 2.再调用 JsonConvert.DeserializeObject() 去反序列化为对象 等同于如下代码 var jsonStr jobject[data][dataLists][a].ToString(); var A JsonConvert.DeserializeObjectListA(jsonStr);因此我们在这里做出应对将A,B,C等这些解析后的对象放在一个对象里面因此就造就了新的集合对象对象结果如下 [System.Serializable] public class Datas {public DataWrapper data { get; set; }public int version { get; set; } }// 对应 data 节点 [System.Serializable] public class DataWrapper {public DataLists dataLists { get; set; } }// 对应 data.dataLists [System.Serializable] public class DataLists {public ListA a { get; set; }public ListB b{ get; set; }public ListC c { get; set; }… }后面我们初始化的逻辑就简单了只需解析这个大对象即可解析代码如下 Datas datas JsonConvert.DeserializeObjectDatas(strJson);我们需要的数据只需要datas.data.a … 这样json的解析时长也从3s变成了1.8s到2s之间优化了3分之一的时间。 优化2 第三方库以及处理方法的抉择
- 三方库Utf8Json ⚠️ 暂不可用有程序崩溃风险 通过各种查阅资料吧看着说Utf8Json能提高加载速度是Newtonsoft.Json的多少倍于是我这边通过github找到了这个库git地址为 utf8json的github地址 可能是我集成的问题我解决了导入工程问题后直接运行unity崩溃了而且我看提交历史都是7 8 年前的提交历史了因此这个库我就pass了不过写这个库的作者又写了个MessagePack for C#这个倒是一直维护感兴趣的可以看下。
- 三方库SimpleJSON ✅ 1.33s simplejson是个比较好用的第三方库它可以方便的拿到对应节点上的内容但是这个库有个致命的缺点他不可以直接序列化对象想要序列化对象需要借助系统的 JsonUtility.FromJson(strJson);或者其他第三方的json转换。所以使用它的方法变为了下面的处理 JSONNode root JSON.Parse(strJson); string dataList root[data][dataLists].ToString(); DataLists player JsonConvert.DeserializeObjectDataLists(dataList);最终这个处理能正常解析json并且提高了加载效率加载时间从1.8s变为了1.33s,因此这个库可以使用。
- 系统库JsonUtility ⚠️ 不好用容易解析不出来 我这边尝试了下假如我们的json文件的datalists下面有 a b c d e这些元素但是我们对象只有 a b c这三个属性会出现对象解析出来为空的情况这个库有以下特征开发小伙伴们需要注意下。 ❌ 不支持泛型 ❌ 不支持 Dictionary ❌ 不支持属性只认 public 字段 ❌ 不支持动态结构或嵌套不匹配 ❌ 错误静默不报错字段为 null
- System.Text.Json ✅ 1.4s 这个库是微软提供的是 .NET Core 3.0 推出的内置库持续维护中感兴趣的可以试一下。 集成步骤如下 1.下载NuGetForUnity github地址为 NuGetForUnity 并安装这个package 2.安装好这个package后打开菜单 NuGet Manage NuGet Packages 3.搜索并安装 System.Text.Json 这个东西会下载很多的其它绑定库。 基本使用就不介绍了我们看下这边是如何处理解析json的代码如下 Datas preLoad System.Text.Json.JsonSerializer.DeserializeDatas(strJson);就这一行就可以解析我们的对象耗时1.4s左右同事他有如下限制开发时候需要注意。 ❌ 不支持 private 属性 ❌ 不支持 public 字段 ❌ 不支持 private 字段 因此定义解析对象的时候我们需要注意1.属性要设置为共同的public 字段不支持因此字段后面要加上{ get; set; }这样编辑器就会认为这是个方法属性。
- Newtonsoft.Json改进处理 ✅ 1.33s 之前的处理我们注意到我们真实的数据外面有两层一层data,一层datalist其实这种定义对于我们需要的结果没任何意义因此我们先取出JObject然后从JObject中取出DataLists代码如下 JObject jobject (JObject)JsonConvert.DeserializeObject(strJson);JToken dataList jobject[data][dataLists];DataLists player dataList.ToObjectDataLists();最终主要耗时体现在了JsonConvert.DeserializeObject上面最终耗时也是达到了1.33s。 总结 这几个库对比来开优先 1.Newtonsoft.Json 推荐 通过改进处理能显著提高响应速度并且使用起来还是很方便的 2.SimpleJSON 推荐 使用简单在特殊场合使用比较方便但是这个库不能直接解析对象还是有些不太好用。 3.System.Text.Json 推荐 这个库效率还不错同样官方出品放心可靠 有一些限制大家还是需要注意的比如属性设置 不知道是不是我的错觉 引入这个库后编译时间变长了大家可以看下自己是不是也这样了。 4.系统库JsonUtility 这个不太推荐 不过就是要注意自己写的结构要跟json本身一一对应好要不就出现莫名奇妙的问题。 5.Utf8Json / MessagePack for C# 前面的新版本unity崩溃后面的大家可以试试。 还有哪些库大家觉得好用又高效的欢迎评论区留言我可以帮大家测测。
- 上一篇: 北京网站建设技术托管余姚网站建设公司
- 下一篇: 北京网站建设建站网站空间和云服务器
相关文章
-
北京网站建设技术托管余姚网站建设公司
北京网站建设技术托管余姚网站建设公司
- 技术栈
- 2026年03月21日
-
北京网站建设好wordpress教育网校
北京网站建设好wordpress教育网校
- 技术栈
- 2026年03月21日
-
北京网站建设公司排名网站开发外包业务怎么接
北京网站建设公司排名网站开发外包业务怎么接
- 技术栈
- 2026年03月21日
-
北京网站建设建站网站空间和云服务器
北京网站建设建站网站空间和云服务器
- 技术栈
- 2026年03月21日
-
北京网站建设开发公司新型互联网项目代理
北京网站建设开发公司新型互联网项目代理
- 技术栈
- 2026年03月21日
-
北京网站建设联系电话科学小制作小发明
北京网站建设联系电话科学小制作小发明
- 技术栈
- 2026年03月21日






