Unity解析JSON数据的方法

JSON 语法规则

  • 数据在名称/值对中
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组

JSON 名称/值对

JSON 数据的书写格式是:名称/值对。

名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:

登录后复制

"name":"赵云"1.

JSON 值

  • 数字(整数或浮点数)
  • 字符串(在双引号中)
  • 逻辑值(true 或 false)
  • 数组(在方括号中)
  • 对象(在花括号中)
  • null

JSON 对象

JSON 对象在花括号中书写:

对象可以包含多个名称/值对:

登录后复制

{ "name":"赵云" , "level":30 }1.

JSON 数组

JSON 数组在方括号中书写:

数组可包含多个对象:

登录后复制

{"Heros": [  { "name":"赵云" , "level":30 },  { "name":"马超" , "level":35 },  { "name":"关羽" , "level":15 },  { "name":"张飞" , "level":18 },  { "name":"黄忠" , "level":50 }]}1.2.3.4.5.6.7.8.9.

Unity中解析JSON

  • 比较流行的listjson。
  • JsonUtility是Unity官方提供的Json解析功能, 被转换的对象必须是可被序列化的,需要标记[System.Serializable] 属性。
  • Newtonsoft.Json (推荐可以解析复杂的json,不需要和json字段一对一 ,灵活)


使用JsonUtility 解析Json案例一

1.新建一个Text文本,命名为“TestJson01.txt”。(文本内容如下)

登录后复制

{   "name":"赵云","level":30,"skill":["迅雷","狂雷天牢","连弩狂涛"]}1.2.3.

2.在Unity中创建一个“Resources/Json”文件夹,将 TestJson01.txt 文件导入在文件中。

3.新建一个类,命名为“JsonInfo.cs”,用来建立数据模型。(如下)

登录后复制

[System.Serializable]public class JsonInfo {    public string name;    public int level;    public string[] skill;}1.2.3.4.5.6.7.

4.新建一个类,命名为“TestJson.cs”。(代码如下)

登录后复制

using UnityEngine;public class TestJson : MonoBehaviour{    private void Awake()    {        string jsonString = Resources.Load<TextAsset>("Json/TestJson01").ToString();        JsonInfo jsonInfo = JsonUtility.FromJson<JsonInfo>(jsonString);        Debug.Log("姓名:"+jsonInfo.name);        Debug.Log("等级:"+jsonInfo.level.ToString());        for(int i=0;i< jsonInfo.skill.Length;i++)        {            Debug.Log("技能"+i+":"+ jsonInfo.skill[i]);        }    }}1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.

5.将 TestJson.cs 挂载在场景中,并运行程序。(结果如下)

Unity 解析Json格式_Json

使用JsonUtility 解析Json案例二

1.新建一个Text文本,命名为“TestJson01.txt”。(文本内容如下)

登录后复制

{   "Heros":[        {"name":"赵云","level":30,"skill":["迅雷","狂雷天牢","连弩狂涛"]},        {"name":"马超","level":35,"skill":["赤焰","赤焰燃","赤焰火海","连弩激射"]},        {"name":"关羽","level":15,"skill":["火箭烈","火箭强袭"]},        {"name":"张飞","level":18,"skill":["火箭天袭","龙炮","迫击龙炮"]},        {"name":"黄忠","level":50,"skill":["贰灭元炮","肆灭元炮","太极祝融弓","八极元","龙凤天舞"," 天雷殛电"]}  ]}1.2.3.4.5.6.7.8.9.

2.新建一个类,命名为“HeroInfo.cs”。(代码如下)

登录后复制

[System.Serializable]public class HeroInfo{    public JsonInfo[] Heros;}1.2.3.4.5.

3.新建一个类,命名为“TestJson2.cs”。(代码如下)

登录后复制

using UnityEngine;public class TestJson2 : MonoBehaviour{    private void Awake()    {       string jsonString = Resources.Load<TextAsset>("Json/TestJson02").ToString();        HeroInfo heroInfos = JsonUtility.FromJson<HeroInfo>(jsonString);        for (int i = 0; i < heroInfos.Heros.Length; i++)        {            JsonInfo jsonInfo = heroInfos.Heros[i];            string nameSrt = jsonInfo.name;            int level = jsonInfo.level;            string skillStr = string.Empty;            string result = string.Empty;            for (int j = 0; j < jsonInfo.skill.Length; j++)            {                skillStr += "技能" + j + ":" + jsonInfo.skill[j];            }            result = string.Format("姓名:{0} 等级:{1} {2}", nameSrt, level, skillStr);            print(result);        }    }}1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.

4.将 TestJson2.cs 挂载在场景中,并运行程序。(结果如下)

Unity 解析Json格式_json_02

 



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空