现在新版的Unity(印象中是从5.3开始)已经提供了原生的Json库,以前一直使用LitJson,研究了一下Unity用的JsonUtility工具类的使用,发现使用还挺方便的,所以打算把项目中的Json库换成Unity原生的。在Unity3D开发中Json有什么用呢?下面就来说说Json在Unity中的使用。

一、Json有什么用?


Json在Unity中还是挺常用的一种数据格式的。那么,在Unity开发中哪些地方会用到Json呢?我相信没有太多编程经验的人肯定对这个问题比较感兴趣。在Unity中,有三种情况下会用到Json:

  1. 跟服务器进行数据交互
  2. 配置文件
  3. 跟Android/iOS数据交互

    目前这三种情况在我们项目中都用到了,搞明白了Json怎么用,这些都很简单,在这里就不赘述了,直接进入正题。

二、Json怎么用?


using UnityEngine;
using System; public class JsonExample : MonoBehaviour
{
void Start()
{
#region 序列化
MyZone myZone = new MyZone();
myZone.blogUrl = "http://www.jianshu.com/users/fd3eec0ab0f2/latest_articles";
myZone.blogName = "Sheh伟伟的博客"; Blog blog = new Blog();
blog.url = "http://www.jianshu.com/p/4243b99a5b84";
blog.name = "快速上手Unity原生Json库";
blog.time = DateTime.Now.ToString("yyyy-MM-dd");
myZone.blog = blog; string json = JsonUtility.ToJson(myZone);
Debug.Log(json);
#endregion #region 反序列化
string blogStr = Resources.Load<TextAsset>("MyZone").text;
myZone = JsonUtility.FromJson<MyZone>(blogStr);
Debug.Log(myZone.ToString());
#endregion
}
} [Serializable]
public class MyZone
{
/// <summary>
/// 博客主页地址
/// </summary>
public string blogUrl;
/// <summary>
/// 博客名
/// </summary>
public string blogName;
/// <summary>
/// 本篇博客
/// </summary>
public Blog blog; public override string ToString()
{
return string.Format("blogUrl:{0}, blogName:{1}, blog:{2}", blogUrl, blogName, blog.ToString());
}
} [Serializable]
public class Blog
{
/// <summary>
/// 文章名称
/// </summary>
public string name;
/// <summary>
/// 本篇博客链接
/// </summary>
public string url;
/// <summary>
/// 博客发表时间
/// </summary>
public string time; public override string ToString()
{
return string.Format("<name:{0}, url:{1}, time:{2}>", name, url, time);
}
}

Json文件

{
"blogUrl": "http://www.jianshu.com/users/fd3eec0ab0f2/latest_articles",
"blogName": "Sheh伟伟的博客",
"blog":
{
"name": "快速上手Unity原生Json库",
"url": "http://www.jianshu.com/p/4243b99a5b84",
"time": "2016-09-27"
}
}

三、注意事项


经过测试发现JsonUtility不支持序列化DateTime、Dictionary和Hashtable,其他类型暂时还没有测试,有兴趣的可以自行测试。

四、参考资料


Unity API

介绍 JSON

如果本文有错误之处还请帮忙指出。本文欢迎转载,但转载请注明出处:http://www.jianshu.com/users/fd3eec0ab0f2/latest_articles

快速上手Unity原生Json库的更多相关文章

  1. Unity 用JSON库序列化与反序列化类,字典

    Unity自己的json序列化是不支持字典格式的,但是 json .net库,功能很强大,还支持序列化字典. 下载地址:https://download.csdn.net/download/qq_15 ...

  2. (数据科学学习手札137)orjson:Python中最好用的json库

    本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,我们在日常使用Pytho ...

  3. requests库的文档--快速上手

    快速上手 迫不及待了吗?本页内容为如何入门 Requests 提供了很好的指引.其假设你已经安装了 Requests.如果还没有,去安装一节看看吧. 首先,确认一下: Requests 已安装 Req ...

  4. Flask入门和快速上手

    目录 Flask入门和快速上手 python三大主流框架对比 Flask安装 依赖 可选依赖 创建flask项目 flask最小应用--hello word 非法导入名称 调试模式 路由 唯一的 UR ...

  5. 快速上手seajs——简单易用Seajs

    快速上手seajs——简单易用Seajs   原文  http://www.cnblogs.com/xjchenhao/p/4021775.html 主题 SeaJS 简易手册 http://yslo ...

  6. 快速上手RaphaelJS-Instant RaphaelJS Starter翻译(一)

       (目前发现一些文章被盗用的情况,我们将在每篇文章前面添加原文地址,本文源地址:http://www.cnblogs.com/idealer3d/p/Instant_RaphaelJS_Start ...

  7. UnityShader快速上手指南(二)

    简介 前一篇介绍了如果编写最基本的shader,接下来本文将会简单的深入一下,我们先来看下效果吧 呃,gif效果不好,实际效果是很平滑的动态过渡 实现思路 1.首先我们要实现一个彩色方块 2.让色彩动 ...

  8. intellij idea 13&14 插件推荐及快速上手建议 (已更新!)

    原文:intellij idea 13&14 插件推荐及快速上手建议 (已更新!) 早些年 在外企的时候,公司用的是intellij idea ,当时也是从eclipse.MyEclipse转 ...

  9. Requests快速上手

    发送请求 使用 Requests 发送网络请求非常简单. 一开始要导入 Requests 模块: >>> import requests 然后,尝试获取某个网页.本例子中,我们来获取 ...

随机推荐

  1. Johnson 全源最短路径算法

    解决单源最短路径问题(Single Source Shortest Paths Problem)的算法包括: Dijkstra 单源最短路径算法:时间复杂度为 O(E + VlogV),要求权值非负: ...

  2. Apache2.4卡住无法访问的解决……

    早两个星期,搭建了一个项目管理平台--<如何安装一个优秀的BUG管理平台--真的是手把手教学!>.以前都是用apache2.2的,这次换了apache2.4.安装起来是没有问题的,结果运行 ...

  3. ASP.NET MVC Model元数据(四)

    ASP.NET MVC Model元数据(四) 前言 前面的篇幅讲解了Model元数据生成的过程,并没有对Model元数据生成过程的内部和Model元数据结构的详细解释.看完本篇后将会对Model元数 ...

  4. Android,通用ListAdapter

    优点 不需要每个列表都建立Adapter. 使用效果 Item点击事件使用的是自写的事件机制. mListAdapter = new BaseListAdapter<PromotionsMode ...

  5. StringBuffer 的 各种方法

    StringBuffer 其实提供了很多有用的方法, 以前用的多是 append, 其实还有: append(double) delete(int, int) deleteCharAt(int) re ...

  6. 解决 SpringBoot 没有主清单属性

    问题:SpringBoot打包成jar后运行提示没有主清单属性 解决:补全maven中的bulid信息 <plugin> <groupId>org.springframewor ...

  7. Web中的XHRHttpRequest

    1.提出者:Jesse James Garrett   2.IE中,XHR是通过ActiveX对象实现的.涉及浏览器的兼容性写法.   3.使用 <1>open("请求方式&qu ...

  8. 前端学HTTP之网络基础

    × 目录 [1]网络 [2]OSI [3]TCP/IP 前面的话 HTTP协议对于前端工程师是非常重要的.我们在浏览网站时,访问的每一个WEB页面都需要使用HTTP协议实现.如果不了解HTTP协议,就 ...

  9. 计算机程序的思维逻辑 (49) - 剖析LinkedHashMap

    之前我们介绍了Map接口的两个实现类HashMap和TreeMap,本节来介绍另一个实现类LinkedHashMap.它是HashMap的子类,但可以保持元素按插入或访问有序,这与TreeMap按键排 ...

  10. Oracle数据库异机升级

    环境: A机:RHEL5.5 + Oracle 10.2.0.4 B机:RHEL5.5 需求: A机10.2.0.4数据库,在B机升级到11.2.0.4,应用最新PSU补丁程序. 目录: 一. 确认是 ...