unitycsharpUnity3D 成神之路

利用VisualStudio将Json转C#实体类,给你2套方案

2018-10-15  本文已影响196人  雨落随风

在本文,笔者将教大家如何使用vs将 json 转为c#实体类:

方案一:

在vs2013版本开始,vs原生支持将json转C#实体类。
使用方法:

  1. 新建一个空脚本
  2. 复制json文本到剪切板
  3. 依次点击编辑→选择性粘贴→将 Json 粘贴为类

Tips:

  1. vs这个功能貌似不支持Dictionary,所以明明可以用字典很好表示的 json 结构他会用类来解析,继而出现很多诡异的类,譬如:


    类名为数字
    如果用字典来解析就简单的多
  2. vs整出的这些个类,由于没有加 [System.Serializable] 属性,所以使用 JsonUtility.FromJson API 解析前要自己添加上以上的属性,否则报对象为空。
  3. 鉴于上一条,建议使用 Newtonsoft.Josn.JsonConvert.DeserializeObject,反正很美味。

方案二:

这个方案需要为vs引入一个名为:“Paste Json as Code-quicktype” 的插件,在json 处理方面,这个插件也是相当有诚意的。


使用方法:

  1. 新建一个空的.cs脚本
  2. 复制 json 文本到剪切板
  3. 依次点击编辑→Paste Json as Code,嗯!简单暴力

Tips:

  1. 就在刚刚,发现腾讯电脑管家居然把这个插件里面的核心文件认定为病毒,“管家,你打扰我敲代码了”。
  2. 这个插件整出的类喜欢用枚举,不想要枚举的自己稍微改改。
  3. 这个插件在处理上面那个问题时就显得很智能了,引入字典:


  4. 对汉字支持貌似NG了,明明是“颜值”二字却给我整出个这个字符串 “棰滃€?”。
  5. Json 序列化和反序列均基于Newtonsoft.Json。
  6. 语法糖使用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 ,也是有些不正确的地方。

这个icdata数据(数据截图在上面) 很默契的让bejson也翻车了

写到最后:

如果没有工程试手,试试这个:https://github.com/Bian-Sh/JsonUsingInUnity
啥环境都有了,demo也整了俩:

我知道,从斗鱼拿来的json更加喜闻乐见,嘿嘿
上一篇下一篇

猜你喜欢

热点阅读