在本文,笔者将教大家如何使用vs将 json 转为c#实体类:
方案一:
在vs2013版本开始,vs原生支持将json转C#实体类。
使用方法:
- 新建一个空脚本
- 复制json文本到剪切板
- 依次点击
编辑→选择性粘贴→将 Json 粘贴为类
。
Tips:
-
vs这个功能貌似不支持Dictionary,所以明明可以用字典很好表示的 json 结构他会用类来解析,继而出现很多诡异的类,譬如:
类名为数字
如果用字典来解析就简单的多 - vs整出的这些个类,由于没有加 [System.Serializable] 属性,所以使用 JsonUtility.FromJson API 解析前要自己添加上以上的属性,否则报对象为空。
- 鉴于上一条,建议使用 Newtonsoft.Josn.JsonConvert.DeserializeObject,反正很美味。
方案二:
这个方案需要为vs引入一个名为:“Paste Json as Code-quicktype” 的插件,在json 处理方面,这个插件也是相当有诚意的。
使用方法:
- 新建一个空的.cs脚本
- 复制 json 文本到剪切板
- 依次点击
编辑→Paste Json as Code
,嗯!简单暴力
Tips:
- 就在刚刚,发现腾讯电脑管家居然把这个插件里面的核心文件认定为病毒,“管家,你打扰我敲代码了”。
- 这个插件整出的类喜欢用枚举,不想要枚举的自己稍微改改。
-
这个插件在处理上面那个问题时就显得很智能了,引入字典:
- 对汉字支持貌似NG了,明明是“颜值”二字却给我整出个这个字符串 “棰滃€?”。
- Json 序列化和反序列均基于Newtonsoft.Json。
- 语法糖使用c# 4.6 及以上版本
动画演示:
QuickType.io 提供扩展阅读:
quicktype.io
Paste JSON as Code - quicktype - Visual Studio Marketplace
vs开发者博客早在2012就写好了的“粘贴 Json 为类”的教程
可能你需要VS2017 的选择性粘贴为什么没有“将XML粘贴为类”选项-CSDN论坛
总结:
vs 原生支持的 json 转实体类很强大,如果json 结构合理或者不复杂的话,使用它得到的c#实体类还是非常值得信赖的。
QuickType.io 提供的功能则更显其专业性和智能性,值得一试!
PS:使用 斗鱼API 同步测试了 Bejson ,也是有些不正确的地方。
写到最后:
如果没有工程试手,试试这个:https://github.com/Bian-Sh/JsonUsingInUnity
啥环境都有了,demo也整了俩:
网友评论