【Unity】读取Json的三种方法(JsonUtility,LitJson,Newtonsoft)

介绍

在Unity开发过程中,Json是比较常用的一种数据存储文本,尤其是在和第三方交互中,基本都是json格式。
先给出一个Json示例,我们来看看是如何解析的。

{"Player": [{"id": 1001,"name": "王二","job": 1},{"id": 1002,"name": "小红","job": 2},{"id": 1003,"name": "刚子","job": 3}]
}

方法一:JsonUtility

JsonUtility是Unity内置的用于解析Json的方法

序列化:ToJson()
反序列化:FromJson<>()

首先需要定义解析后的实体类

[System.Serializable]
public class PlayerData
{//玩家IDpublic int id;//玩家名字public string name;//玩家职业public int job;
}
[System.Serializable]
public class Data
{public PlayerData[] Player;
}

解析代码如下

    void Start(){//加载资源TextAsset obj = Resources.Load<TextAsset>("player" );if (obj != null){//解析Data m_Data = JsonUtility.FromJson<Data>(obj.text);//打印foreach (PlayerData item in m_Data.Player){Debug.Log("ID:"+item.id + "  Name:" + item.name + "  Job:" + item.job);}}}

方法二:LitJson

需要:LitJson插件
序列化:ToJson()
反序列化:ToObject<>()

   void Start(){//加载资源TextAsset obj = Resources.Load<TextAsset>("player" );if (obj != null){//使用JsonMapper.ToObject解析Data m_Data = JsonMapper.ToObject<Data>(obj.text);//打印foreach (PlayerData item in m_Data.Player){Debug.Log("ID:"+item.id + "  Name:" + item.name + "  Job:" + item.job);}}}

方法三:Newtonsoft

需要:Newtonsoft.Json.dll
序列化:SerializeObject()
反序列化:DeserializeObject<>()

    void Start(){//加载资源TextAsset obj = Resources.Load<TextAsset>("player" );if (obj != null){//JsonConvert.DeserializeObjectData m_Data = JsonConvert.DeserializeObject<Data>(obj.text);//打印foreach (PlayerData item in m_Data.Player){Debug.Log("ID:"+item.id + "  Name:" + item.name + "  Job:" + item.job);}}

打印结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/738313.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SSL---VPN

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 一.SSL-VPN概述 SLL VPN是一种基于HTTPS&#xff08;即支持SSL的HTTP协议&#xff09;的远程安全接入技术。它充分利用了SSL协议提供的基于证书的身份认证、数据加密和消息完整性验证机制&#…

23-Java空对象模式 ( Null Object Pattern )

Java空对象模式 实现范例 在空对象模式&#xff08;Null Object Pattern&#xff09;中&#xff0c;一个空对象取代 NULL 对象实例的检查Null 对象不是检查空值&#xff0c;而是反应一个不做任何动作的关系&#xff0c;这样的 Null 对象也可以在数据不可用的时候提供默认的行为…

maven运行spring boot项目

我用idea想跑一个整合flowable的spring boot项目&#xff0c;但是跑不起来&#xff0c;原因是jdk版本不够高。但是我的idea是2018版本&#xff0c;最高只能支持到jdk11。就想办法不用idea编译、打包、运行项目。因为spring boot是maven项目&#xff0c;所以可以用maven进行打包…

QT文件的读取与插入

实现功能&#xff1a; 1.输入文本到 Line_edit 点击插入&#xff0c;把文本添加到文件末端 2.点击 获取 读取txt文本&#xff0c;将文本内容显示到左边的窗口中 3.双击左边窗口的选项&#xff0c;弹出对话框&#xff0c;跳转到右边 主要介绍一下文件OI的使用 首先用QFile fil…

51单片机基础篇系列-LED灯点亮代码部分

&#x1f308;个人主页: 会编辑的果子君 &#x1f4ab;个人格言:“成为自己未来的主人~” #include<reg52.h> //包含单片机内部寄存器 void main() //&#xff08;&#xff09;{P10xfe;//1111 1110while(1); // } 上面是第一个 LED实验 #include<reg52.h>…

51单片机新建工程

文章目录 前言一、keil新建工程&#xff1f;1.新建文件夹 二、使用步骤1.引入库2.读入数据 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 课程需要&#xff1a; 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、keil新…

基于ACM32 MCU的两轮车充电桩方案介绍,有利于打造高效安全的电池管理

随着城市化进程的加快、人们生活水平的提高和节能环保理念的普及&#xff0c;越来越多的人选择了电动车作为代步工具&#xff0c;而两轮电动车的出行半径较短&#xff0c;需要频繁充电&#xff0c;因此在城市中设置两轮车充电桩就非常有必要了。城市中的充电桩不仅能解决两轮车…

【笔记版】cgroup大摸底

云端&#xff1a; subsystem实际上就是cgroups的资源控制系统。 blkio&#xff1a; 这个subsystem可以为块设备设定输入/输出限制&#xff0c;比如物理驱动设备&#xff08;包括磁盘、固态硬盘、USB等&#xff09;。cpu&#xff1a; 这个subsystem使用调度程序控制task对CPU的…

力扣大厂热门面试算法题 12-14

12. 整数转罗马数字&#xff0c;13. 罗马数字转整数&#xff0c;14. 最长公共前缀&#xff0c;每题做详细思路梳理&#xff0c;配套Python&Java双语代码&#xff0c; 2024.03.11 可通过leetcode所有测试用例。 目录 12. 整数转罗马数字 解题思路 完整代码 Java Pytho…

STM32 学习11 独立看门狗与窗口看门狗

STM32 学习11 独立看门狗与窗口看门狗 一、**看门狗概述**二、**STM32中的看门狗类型**1. 独立看门狗&#xff08;IWDG&#xff09;&#xff08;1&#xff09;基本概念&#xff08;2&#xff09;独立看门狗框图&#xff08;3&#xff09;独立看门狗配置步骤&#xff08;4&#…

十大排序算法(冒泡排序、插入排序、选择排序、希尔排序、堆排序、快排、归并排序、桶排序、计数排序、基数排序)

目录 一、冒泡排序&#xff1a; 二、插入排序&#xff1a; 三、选择排序&#xff1a; 四、希尔排序&#xff1a; 五、堆排序&#xff1a; 六、快速排序&#xff1a; 6.1挖坑法&#xff1a; 6.2左右指针法 6.3前后指针法&#xff1a; 七、归并排序&#xff1a; 八、桶…

Linux报错排查-CentOS/BigCloud_Enterprise_Linux系统yum安装kvm报错

Linux运维工具-ywtool 目录 一.系统环境二.问题描述三.问题解决四.其他命令 一.系统环境 系统版本:BigCloud_Enterprise_Linux 7.1 二.问题描述 通过yum安装kvm报错提示: /usr/bin/yum install -y qemu-kvm qemu-img libvirt libvirt-python virt-manager libvirt-client …

系统运维网络知识汇总

一、系统运维中网络方面的规划与思考 系统运维建立在网络的基础之上&#xff0c;如果没有一个相对合理的网络架构&#xff0c;恐怕系统运维做起来也不是那么的顺手。一个公司基本上都会把网络和服务器独立开来&#xff0c;划分不同的区域摆放设备&#xff0c;很多时候都是物理…

2024年家政预约上门服务小程序【用户端+商家端+师傅端】源码

024最新家政预约上门服务小程序源码 主要功能:商家入住&#xff0c;师傅入住&#xff0c;缴纳保正金 支持师傅&#xff0c;抢单派单 支持多城市多门下单&#xff0c;支持预约上门服务到店核销 支持补差价义价&#xff0c;支持区域服务限制 基于thinkphp和原生小程序开发

【五】【算法分析与设计】双指针的初见

167. 两数之和 II - 输入有序数组 给你一个下标从 1 开始的整数数组 numbers &#xff0c;该数组已按 非递减顺序排列 &#xff0c;请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index(1)] 和 numbers[index(2)] &#xff0c;则 1 &…

排序类算法

目录 一、交换类排序 1.冒泡排序 2.快速排序 二、 插入排序 1.直接插入排序 2.折半插入排序 3.希尔排序 三、选择排序 1.简单选择排序 2.堆排序 完整代码 四、归并排序 完整代码 五、汇总 六、OJ练习 1.冒泡排序&#xff1a;正确表示前一个数和后一个数 2.选…

LLM推理框架Triton Inference Server学习笔记(一): Triton Inference Server整体架构初识

官方文档查阅: TritonInferenceServer文档 1. 写在前面 这篇文章开始进行大语言模型(Large Language Model, LLM)的学习笔记整理&#xff0c;这次想从Triton Inference Server框架开始&#xff0c;因为最近工作上用到了一些大模型部署方面的知识&#xff0c; 所以就快速补充了…

【STM32】串口助手接受数据是乱码如何解决

第一步 首先判断自己使用的串口助手和工程配置的波特率是否相同&#xff0c;一般都是115200 第二步 如果不是上一条的问题&#xff0c;继续排查&#xff0c;检查时钟问题 打开工程&#xff0c;找到此文件(stm32f10x.h)的这个位置&#xff0c;如工程中未添加&#xff0c;可以从…

centos安装hadoop启动问题解决方案

1、出现了问题localhost: ERROR: JAVA_HOME is not set and could not be found. *解决方案尝试&#xff1a; 修改hadoop-env.sh&#xff08;在etc/hadoop&#xff09; sudo gedit /usr/local/hadoop/etc/hadoop/hadoop-env.sh 将原本的JAVA_HOME 替换为绝对路径就可以了 #expo…

Leetcode 144. 二叉树的前序遍历

题目描述&#xff1a;给定一个二叉树的根节点 root &#xff0c;返回 它的 前序 遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,3,2] 示例 2&#xff1a; 输入&#xff1a;root [] 输出&#xff1a;[] 示例 3&#xff1a; 输入&…