unity 本地使用Json(全套)
提示:文章有错误的地方,还望诸位大神不吝指教!
文章目录
- 前言
- 一、Json是什么?
- 二、创建Json文件
- 1.在线编辑并转实体类(C#)
- 2.Json文件
- 三、解析Json并使用
- 四、报错:JsonError:JsonException: Invalid character ’’ in input string
- 总结
前言
今天聊一聊怎么使用Json,从怎么编辑Json内容到代码里得到并使用Json。
手把手教学,看完本章节即会完整的使用流程!
一、Json是什么?
JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式,主打一个便捷好用。
平时用到比较多的都是解析Json和往Json中添加数据、修改数据等。
序列化:将Java对象数据转换成JSON字符串数据
反序列化:将JSON字符串数据转换成Java对象数据
二、创建Json文件
1.在线编辑并转实体类(C#)
链接: JSON转C#实体类
打开这个网站进行编辑即可,不知道格式点击”来个Json试试“,就会出现实例Json
编辑好后点击“生成实体类”,复制到C#类里就可以了
得到C#类:Root(类名是默认这个,可以修改)

2.Json文件
链接: Json在线编辑

Json文件:就是你编辑的这个,放在特殊文件夹里:StreamingAssets
得到Json文件:content.json(文件名是默认这个,可以修改)
三、解析Json并使用
注意点:类名和Json名 必须和你上面步骤创建的分别保持一致
using System.Collections;
using UnityEngine;
using UnityEngine.Networking;
using Twq;
using LitJson;
/// <summary>
/// Json管理
/// </summary>
public class JsonManage : SingletonMono<JsonManage>
{protected override void Awake(){base.Awake();StartCoroutine(GetInfoDataJson01());}/// <summary>/// /// </summary>/// <returns></returns>private IEnumerator GetInfoDataJson01(){UnityWebRequest webRequest = UnityWebRequest.Get(Application.streamingAssetsPath + "/Json/PhoneticText.json");yield return webRequest.SendWebRequest();if (webRequest.isHttpError || webRequest.isNetworkError)Debug.Log(webRequest.error);else{Root test = LitJson.JsonMapper.ToObject<Root>(webRequest.downloadHandler.text);Debug.Log("json=" + test.PhoneticText[0].TaskIntroduction);//全局变量 存储GlobalVariable.PhoneticTextJson= LitJson.JsonMapper.ToObject<Root>(webRequest.downloadHandler.text);Debug.Log("json=" + GlobalVariable.PhoneticTextJson.PhoneticText[0].TaskIntroduction);}}IEnumerator GetData(){UnityWebRequest request = UnityWebRequest.Get("http://www.wotimadeyebuzhidudizhishisha.com");yield return request.SendWebRequest();if (request.isNetworkError || request.isHttpError){Debug.Log(request.error);}else{Debug.Log(request.downloadHandler.text);JsonData objs = JsonMapper.ToObject(System.Text.Encoding.UTF8.GetString(request.downloadHandler.data, 3, request.downloadHandler.data.Length - 3));Debug.Log(objs.ToJson());}}
}
四、报错:JsonError:JsonException: Invalid character ’’ in input string

单看报错信息基本上都是Json 的错误,我么可能会去查找json格式的错误,但是如果你照做了。
你会发现,json文本格式没有错误。
错误的真正原因是UTF-8BOM。
BOM——Byte Order Mark,就是字节序标记UTF-8文件中放置BOM主要是微软的习惯,但是放在别的系统上会出现问题。不含BOM的UTF-8才是标准形式,UTF-8不需要BOM带BOM的UTF-8文件的开头会有U+FEFF,所以新建的空文件会有3字节的大小。
出现这种原因是我使用代码去创建Json文件导致。
为了避免这种格式的文档我们可以通过设置UTF8Encoding 的构造函数参数,为false使用无BOM格式的文档。
简单来说创建Json文件的时候注意,别自己随意创建,然后修改后缀。
我提供一个正确的Json文件,你们替换里面的内容即可:链接: 正确的Json文件
总结
好记性不如烂笔头!
相关文章:
unity 本地使用Json(全套)
提示:文章有错误的地方,还望诸位大神不吝指教! 文章目录 前言一、Json是什么?二、创建Json文件1.在线编辑并转实体类(C#)2.Json文件 三、解析Json并使用四、报错:JsonError:JsonExce…...
java消息队列ActiveMQ
安装 前置条件 activemq的运行依赖于jdk,需要提前安装jdk如果已经安装了jdk,需要根据jdk的版本来选择对应的版本进行安装activemq版本对应在官网上,使用java -version 看jdk的版本注意:jdk和mq的版本不一致会报错,电脑…...
Android SurfaceFlinger——信号同步原理(五十一)
经过前面系列文章的学习,我们的已经理解了 SurfaceFlinger 运行机制以及同步机制,但是SurfaceFlinger 又是以什么方法是把需要刷新的信号发送给 App 进程的。 一、VSync简介 垂直同步(Vertical Synchronization,简称 VSync)是一种用于同步视频信号和显示设备刷新率的技术…...
html+css网页制作 博云丝网5个页面 无js ui还原度100%
htmlcss网页制作 博云丝网5个页面 无js ui还原度100% 网页作品代码简单,可使用任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取…...
Docker Hub 镜像代理加速
因为未知原因,docker hub 已经不能正常拉取镜像,可以使用以下代理服务来进行: "https://docker.m.daocloud.io", "https://noohub.ru", "https://huecker.io", "https://dockerhub.timeweb.cloud"…...
矩阵:消除冗余
矩阵 基本概念 矩阵(Matrix)是一个按照行和列排列的元素的二维数组。具体来说,一个 ( m \times n ) 的矩阵有 ( m ) 行和 ( n ) 列,表示为: A ( a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a m 1 a m 2 ⋯…...
【AWS账号解绑关联】Linker账号解绑重新关联注意事项
文章目录 一、来自客户疑问二、提交工单获取帮助三、最佳操作说明四、最佳操作步骤五、参考资料活动上新 一、来自客户疑问 将Linker账号,从一个组织中退出,重新关联到新的组织中,这解绑到重新完成新的关联绑定期间会在Linker账号中的账单中…...
入门学习使用overleaf和latex
文章目录 1.下载对应的latex论文模板2.overleaf平台的使用2.1overleaf平台的介绍2.2overleaf平台模板文件的上传2.3latex语法的学习2.3.2 分段(如下图显示)2.3.3 其他2.3.4简单latex实操2.3.5 换行符和换页符2.3.6左右居中对齐2.3.7 字体设置2.3.8插入固定位置图片2.3.9文字包围…...
后端调优——分布式锁选型——入门
文章目录 引言正文分布式锁的定义分布式锁的具体应用场景如何实现分布式锁主动轮询型分布式锁实现思路一、MySQL分布式锁二、Redis分布式锁 监听回调型分布式锁Etcd分布式锁Zookeeper分布式锁 锁的对比 总结 引言 最近面试,一直被问到分布式锁,然后仅仅…...
k8s集群管理 Pod管理命令
k8s集群管理命令 信息查询命令 子命令说明help用于查看命令及子命令的帮助信息cluster-info显示集群的相关配置信息api-resources查看当前服务器上所有的资源对象api-versions查看当前服务器上所有资源对象的版本config管理当前节点上的认证信息 资源对象概述 Pod概述 Pod 管…...
Java 并发(二)—— AQS原理
AQS,全名AbstractQueuedSynchronizer。 抽象队列同步器定义多线程访问共享资源的同步模板,解决了实现自定义同步器时涉及的大量细节问题,简化开发两种同步状态:独占、共享核心组件:State变量、CLH变体队列、获取 / 释…...
Maven插件:exec-maven-plugin-代码执行或者直接输出内置变量信息
文章目录 概述使用应用自行实现记录项目打包插件 概述 官网: https://www.mojohaus.org/exec-maven-plugin/usage.html 依赖: https://mvnrepository.com/artifact/org.codehaus.mojo/exec-maven-plugin 使用 <plugin><groupId>org.codeh…...
https://ffmpeg.org/
https://ffmpeg.org/ https://www.gyan.dev/ffmpeg/builds/ https://github.com/BtbN/FFmpeg-Builds/releases F:\Document_ffmpeg F:\Document_ffmpeg\ffmpeg-master-latest-win64-gpl-shared\bin...
linux 源码部署polardb-x 错误汇总
前言 在linux 源码部署polardb-x 遇到不少错误,特在此做个汇总。 问题列表 CN 启动报错 Failed to init new TCP 详细错误如下 Caused by: Failed to init new TCP. XClientPool to my_polarx#267b21d8127.0.0.1:33660 now 0 TCP(0 aging), 0 sessions(0 runni…...
vscode用快捷键一键生成vue模板
项目中有些代码模块是固定的,如下面的代码所示,为了不重复写这些相同的代码,我们可以使用快键键一键生成模板。 流程: 中文:首选项-> 用户代码片段 -> 输入框中输入vue,找到vue.json文件(没有vue.j…...
ARM 架构硬件新趋势:嵌入式领域的未来
目录 目录 一、ARM 架构概述 二、新趋势一:AI 加速器集成 三、新趋势二:更高效的电源管理 四、新趋势三:安全性增强 五、结语 随着物联网 (IoT) 和边缘计算的发展,ARM 架构在嵌入式系统中的应用越来越广泛。从智能手机到智能…...
星戈瑞-二油酰磷脂酰乙醇胺标记荧光素 DOPE-FITC
DOPE-FITC,全称为1,2-dioleoyl-sn-glycero-3-phosphoethanolamine-N-FITC,是一种结合了二油酰磷脂酰乙醇胺(DOPE)与荧光素异硫氰酸酯(FITC)的复合标记物。以其独特的磷脂结构和强烈的绿色荧光特性ÿ…...
堆的实现(偷懒版)
🌹个人主页🌹:喜欢草莓熊的bear 🌹专栏🌹:数据结构 目录 前言 一、堆的实现 1.1 堆的向下调整算法 思路: 1.2 堆的向上调整算法 1.3 堆的创建 1.4 堆的复杂度计算 向下调整建堆的复杂度…...
一键启动,智能分拣:3D视觉系统赋能多SKU纸箱高效混拆作业
在快速发展的电商时代,仓储物流面临着前所未有的挑战。尤其是面对成千上万种不同的纸箱,如何实现快速、准确、高效的混拆作业,成为了众多企业亟待解决的问题。幸运的是,随着科技的进步,3D视觉系统正逐步成为这一领域的…...
unity草体渲染方案 GPU Instaning
有一天看项目里的FrameDebug发现在森林系的场景里草体的drawcall差不多有100多 主要是因为灯光贴图,位置等不一样导致的打断合批,导致一个批次只能渲染10个左右的草体 之前有了解过unity有接口(Graphics.DrawMeshInstanced)可以把…...
彻底解决Windows磁盘空间危机:Driver Store Explorer专业驱动管理指南
彻底解决Windows磁盘空间危机:Driver Store Explorer专业驱动管理指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 你是否曾为Windows系统盘空间不断缩小而烦恼ÿ…...
5步打造清爽右键菜单:ContextMenuManager开源工具完全指南
5步打造清爽右键菜单:ContextMenuManager开源工具完全指南 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 当你在Windows系统中右键点击文件时&#…...
OpenClaw学习助手:Qwen2.5-VL-7B自动解析教材插图
OpenClaw学习助手:Qwen2.5-VL-7B自动解析教材插图 1. 为什么需要AI学习助手 作为一名经常需要阅读大量技术文档的开发者,我发现自己经常陷入"读得快忘得更快"的困境。特别是遇到包含复杂图表和公式的教材时,手动整理关键信息要耗…...
别再死记硬背了!用PyTorch代码逐行拆解Transformer中的QKV矩阵计算
用PyTorch代码逐行拆解Transformer中的QKV矩阵计算 在自然语言处理领域,Transformer架构已经成为事实上的标准。但很多开发者发现,仅通过理论图示理解其核心的注意力机制仍然存在困难。本文将带你用PyTorch代码从零开始实现QKV矩阵的计算过程,…...
javaee-网络原理2
⽹络原理-TCP/IP ①应用层:规则 → 格式 → 实际用途讲解↓ (1)定义应用之间怎么通信比如:浏览器怎么请求网页、APP 怎么跟服务器发数据。 谁先说话什么时候发请求什么时候回响应出现错误怎么办一次会话怎么开始、怎么结束 比如 HTTP 协议就明确规定&…...
C++高频交易内存池性能跃迁指南(从42μs到1.7μs的97.6%时延压缩路径)
第一章:C高频交易内存池性能跃迁全景图在毫秒乃至微秒级竞争的高频交易系统中,动态内存分配已成为关键性能瓶颈。标准 malloc 与 new 操作引入的锁争用、TLB抖动及堆碎片问题,直接导致订单延迟波动增大、吞吐量不可预测。现代低延迟内存池通过…...
AST 是什么?费曼 + 大白话 + 画图,30 秒彻底懂
我用最简单、最形象、最不绕弯的方式给你讲清楚,保证你马上能听懂👇一、AST 代码的骨架结构图全称:Abstract Syntax Tree 抽象语法树一句话:AST 就是把代码拆成逻辑结构,去掉所有标点、空格、格式,只保留 …...
基于Cortex-M3和步进电机的数字钟控制及其语音播报系统设计
一、系统概述 系统以Cortex-M3内核单片机(如STM32F103C8T6)为核心,融合步进电机精密驱动、实时时钟(RTC)、语音合成播报三大功能,实现“数字钟精准显示机械指针动态指示定时语音报时”的一体化设计。系统通…...
Unity性能优化终极利器:MeshFusion Pro
在现代游戏开发中,性能优化始终是一个核心问题。尤其是在大型场景或高复杂度模型的项目中,Draw Call 过多、顶点数量庞大以及实时生成对象都会严重拖慢游戏帧率,影响用户体验。为了应对这些挑战,Unity 开发者社区中出现了大量优化…...
ZLMediaKit(webrtc)在CentOS7上的高效部署与常见问题解决指南
1. 环境准备与依赖安装 在CentOS7上部署ZLMediaKit(webrtc)前,需要先搞定基础环境。我遇到过不少新手直接克隆代码就开始编译,结果被各种报错劝退。下面这些依赖就像盖房子前要打的地基,缺一不可。 1.1 更新系统与基础工具 刚装好的CentOS7就…...
