u3d中JSON数据处置惩罚

打印 上一主题 下一主题

主题 1037|帖子 1037|积分 3111

一.认识JSON

1.1 Json概述



  • JSON(JavaScript Object Notation,JavaScript对象表示法)
  • JSON和XML是比较雷同的技术,都是用来存储文本信息数据的;相对而言,JSON比XML体积更小巧,但是易读性不如XML。
  • JSON是轻量级的文本数据交换格式,可以用于服务器和客户端之间的数据传输的载体;XML也是可以完成这个任务的。
  • JSON和XML一样并不是哪一门语言的专属技术,而是通用的,几乎所有编程语言都可以操作和利用JSON,XML相关的数据文件。
  • JSON可用于数据存储:以文本文件情势存在于客户端,作为静态数据源利用
  • JSON可用于数据传输:服务端将数据以JSON数据的格式传输给客户端,客户端解析后利用
1.2 JSON示例

压缩格式:
[{"id": "15", "name":"eter"}, {"id": "12"}]
解析格式:
[
    {
        "id": "15",
        "name": "eter"
    },
    {
        "id": "12"
    }
]

收集几个解析网站:
https://www.json.cn/jsononline/
https://www.jsonla.com/
1.3 json语法注意事项

1.当有多个数据对象时,最外层用[]包裹,表示是一个数组;
2.每一对{}表示一个独立的数据对象;
3.json对象内的数据,以键值对的情势存在;
4.json中字符串需要以“”包裹;
5.json中需要用逗号进行数据分割,且最后位置不需要逗号;
二.Unity内利用JSON

1.Assets下创建文件夹Plugins(定名固定,引擎约定用于插件的文件夹)
2.下载LitJson.dll,并将其拖拽至该文件夹内
3.脚本内引入定名空间:using LitJson;
接下来就可以调用Json相关API了
三.Json API演示

下面示例将演示:


  • 单对象转Json
  • 多对象转Json
  • Json转单对象
  • Json转多对象(较为常用)
  • 构造JsonData对象获取Json
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using LitJson;  //引入命名空间
  5. public class Player
  6. {
  7.     public int ID { get; set; } //自动实现的属性
  8.     public string name;
  9.     private int lev;
  10.     public Player() { } //用于Json转对象,不可或缺
  11.     public Player(int _id, string _name, int _lev)
  12.     {
  13.         ID = _id;
  14.         name = _name;
  15.         lev = _lev;
  16.     }
  17.     public string printInfo()
  18.     {
  19.         return string.Format("id:{0}, name:{1}, lev:{2}", ID, name, lev);
  20.     }
  21. }
  22. public class JSONDemo : MonoBehaviour
  23. {
  24.     // Start is called before the first frame update
  25.     void Start()
  26.     {
  27.         Player p1 = new Player(30, "Peter", 10);
  28.         Debug.Log(p1.printInfo());
  29.         //单对象转Json
  30.         string str1 = JsonMapper.ToJson(p1);
  31.         Debug.Log("-------------单对象转Json");
  32.         Debug.Log(str1);
  33.         //多对象转Json
  34.         List<Player> playerList1 = new List<Player>();
  35.         Player p2 = new Player(31, "Tom", 11);
  36.         playerList1.Add(p1);
  37.         playerList1.Add(p2);
  38.         string str2 = JsonMapper.ToJson(playerList1);
  39.         Debug.Log("-------------多对象转Json");
  40.         Debug.Log(str2);
  41.         //Json转单对象
  42.         Player p3 = JsonMapper.ToObject<Player>(str1);  //会调用默认构造函数
  43.         Debug.Log("-------------Json转单对象");
  44.         Debug.Log(p3.printInfo());
  45.         //Json转多对象(较为常用)
  46.         JsonData jsonData = JsonMapper.ToObject(str2);
  47.         List<Player> playerList2 = new List<Player>();
  48.         for (int i = 0; i < jsonData.Count; i++)
  49.         {
  50.             Player temp = JsonMapper.ToObject<Player>(jsonData[i].ToJson());
  51.             playerList2.Add(temp);
  52.         }
  53.         Debug.Log("-------------Json转多对象");
  54.         for (int i = 0; i < playerList2.Count; i++)
  55.         {
  56.             Debug.Log(playerList2[i].printInfo());
  57.         }
  58.         //构造JsonData对象获取Json
  59.         JsonData jd = new JsonData();
  60.         jd["id"] = "101";
  61.         jd["name"] = "James";
  62.         Debug.Log("-------------构造JsonData对象获取Json");
  63.         Debug.Log(jd.ToJson());
  64.     }
  65. }
复制代码



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

数据人与超自然意识

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表