当前位置: 首页 > article >正文

u3d中JSON数据处理

一.认识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":"Peter"}, {"id": "12"}]

解析格式:

[
    {
        "id": "15",
        "name": "Peter"
    },
    {
        "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
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LitJson;  //引入命名空间
public class Player
{
    public int ID { get; set; } //自动实现的属性
    public string name;
    private int lev;
    public Player() { } //用于Json转对象,不可或缺
    public Player(int _id, string _name, int _lev)
    {
        ID = _id;
        name = _name;
        lev = _lev;
    }

    public string printInfo()
    {
        return string.Format("id:{0}, name:{1}, lev:{2}", ID, name, lev);
    }
}
public class JSONDemo : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        Player p1 = new Player(30, "Peter", 10);
        Debug.Log(p1.printInfo());
        //单对象转Json
        string str1 = JsonMapper.ToJson(p1);
        Debug.Log("-------------单对象转Json");
        Debug.Log(str1);

        //多对象转Json
        List<Player> playerList1 = new List<Player>();
        Player p2 = new Player(31, "Tom", 11);
        playerList1.Add(p1);
        playerList1.Add(p2);
        string str2 = JsonMapper.ToJson(playerList1);
        Debug.Log("-------------多对象转Json");
        Debug.Log(str2);

        //Json转单对象
        Player p3 = JsonMapper.ToObject<Player>(str1);  //会调用默认构造函数
        Debug.Log("-------------Json转单对象");
        Debug.Log(p3.printInfo());

        //Json转多对象(较为常用)
        JsonData jsonData = JsonMapper.ToObject(str2);
        List<Player> playerList2 = new List<Player>();
        for (int i = 0; i < jsonData.Count; i++)
        {
            Player temp = JsonMapper.ToObject<Player>(jsonData[i].ToJson());
            playerList2.Add(temp);
        }
        Debug.Log("-------------Json转多对象");
        for (int i = 0; i < playerList2.Count; i++)
        {
            Debug.Log(playerList2[i].printInfo());
        }

        //构造JsonData对象获取Json
        JsonData jd = new JsonData();
        jd["id"] = "101";
        jd["name"] = "James";
        Debug.Log("-------------构造JsonData对象获取Json");
        Debug.Log(jd.ToJson());
    }
}


http://www.kler.cn/a/460096.html

相关文章:

  • 【51项目】51单片机自制小霸王游戏机
  • 【大模型】wiki中文语料的word2vec模型构建
  • 论文阅读:Fine-Grained Recognition With Learnable Semantic Data Augmentation
  • sqlite3 python如何查表结构
  • git reset --hard(重置到当前提交,所有未提交的更改都会被永久丢弃)
  • 基于深度学习的视觉检测小项目(二) 环境和框架搭建
  • 服务器部署LLM、Embedding
  • 罗德与施瓦茨ZN-Z51,8.5G网分校准件
  • 计算机网络 (12)物理层下面的传输媒体
  • C# 标准数字格式字符串
  • Pytorch使用手册-DCGAN 指南(专题十四)
  • Notepad++:下载安装及使用指南
  • C++通透讲解设计模式:开闭原则(1)
  • Python软体中使用 Kafka 实现高吞吐量的任务队列
  • 结合华为云实现人证核验
  • C++ 设计模式:抽象工厂(Abstract Factory)
  • pyqt5 设计pdf 和word文件互相转换小程序
  • 二、SQL语言,《数据库系统概念》,原书第7版
  • 【Redis】万字整理 Redis 非关系型数据库的安装与操作
  • Android笔试面试题AI答之Android基础(4)
  • elementui的默认样式修改
  • 备战春招 | 数字IC FPGA笔试题
  • 【从零开始入门unity游戏开发之——C#篇32】C#其他不常用的泛型数据结构类、顺序存储和链式存储
  • Python 爬虫中的反爬策略及详细应对方法
  • 【LLM】Langflow 的简单使用
  • SQL实现新年倒计时功能