现在新版的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. Android 浏览器 —— 使用 WebView 实现文件下载

    对当前的WebView设置下载监听 mCurrentWebView.setDownloadListener(new DownloadListener() { @Override public void ...

  2. webService学习之路(二):springMVC集成CXF快速发布webService

    继上一篇webService入门之后,http://www.cnblogs.com/xiaochangwei/p/4969448.html ,现在我将我周六在家研究的结果公布出来 本次集成是基于之前已 ...

  3. ASP.NET MVC Html.BeginForm 设置 timeout

    示例代码: @using (Html.BeginForm("PublishSubmit", "Blog", FormMethod.Post, new { id ...

  4. yii2获取登录前的页面url地址--电脑和微信浏览器上的实现以及yii2相关源码的学习

    对于一个有登录限制(权限限制)的网站,用户输入身份验证信息以后,验证成功后跳转到登录前的页面是一项很人性化的功能.那么获取登录前的页面地址就很关键,今天在做一个yii2项目的登录调试时发现了一些很有意 ...

  5. NSSortDescriptor 的使用

    NSSortDescriptor  是什么 ? 你可以将它看做是对一个排序规则的描述者  因为我们可以使用它来对我们数组中的对象进行排序操作 假设现在有这样一个需求: 数组里面有十个Person对象 ...

  6. Rafy 框架 - 执行SQL或存储过程

    有时候,开发者不想通过实体来操作数据库,而是希望通过 SQL 语句或存储过程来直接访问数据库.Rafy 也提供了一组 API 来方便实现这类需求. IDbAccesser 接口 为了尽量屏蔽各数据库中 ...

  7. 配置IIS的通配符应用程序映射

    使用IIS 6架设网站,如果要使用伪静态的功能,可能需要设置“通配符应用程序映射(执行顺序)”. 在Windows Server 2012 r2 的IIS 8中,对应的是添加设置“通配符脚本映射”,参 ...

  8. 第四篇 Entity Framework Plus 之 Batch Operations

    用 Entity Framework  进行 增,删,改.都是基于Model进行的,且Model都是有状态追踪的.这样Entity Framework才能正常增,删,改. 有时候,要根据某个字段,批量 ...

  9. Sublime Text 2 快捷操作

    Sublime Text 2 包含了大量快捷操作,而且还很方便修改和追加自己喜欢的快捷键. 查看快捷键的方式也很简单: 点击菜单栏:Preferences->Key Bindings –Defa ...

  10. Java - 网络编程

    Java的网络编程学习,关于计算机基础的学习参考:计算机网络基础学习 - sqh.     参考: