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

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文件

总结

好记性不如烂笔头!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • JMeter常见的高频面试题整理
  • RCE漏洞函数
  • RCE漏洞复现
  • 入门岛2-python实现wordcount并进行云端debug
  • git中如何修改提交信息(版本号)
  • Linux系统安全及应用(一):密码安全、命令历史限制、终端自动注销、su命令和限制su命令
  • 停止项目大小调整,开始搜索层自动缩放!
  • HarmonyOS.FA开发流程
  • 企业微信推送消息的Java实现教程
  • 解决svn上传代码,遇到文件冲突的问题
  • Python必备——高效配置与使用Pip换源
  • C++ | Leetcode C++题解之第331题验证二叉树的前序序列化
  • 【从零开始一步步学习VSOA开发】发布订阅重连时同步
  • 代码随想录算法训练营Day26 | Leetcode 455 分发饼干 Leetcode 376 摆动序列 Leetcode 53 最大子序和
  • 【CSharp】简单定义一个异步方法
  • 深入了解以太坊
  • “大数据应用场景”之隔壁老王(连载四)
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • Cumulo 的 ClojureScript 模块已经成型
  • export和import的用法总结
  • extjs4学习之配置
  • git 常用命令
  • JAVA并发编程--1.基础概念
  • Puppeteer:浏览器控制器
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 读懂package.json -- 依赖管理
  • 工程优化暨babel升级小记
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 批量截取pdf文件
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 前端相关框架总和
  • 如何学习JavaEE,项目又该如何做?
  • 手写双向链表LinkedList的几个常用功能
  • 思考 CSS 架构
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (20050108)又读《平凡的世界》
  • (CVPRW,2024)可学习的提示:遥感领域小样本语义分割
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (十三)Flask之特殊装饰器详解
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (一)80c52学习之旅-起始篇
  • (一一四)第九章编程练习
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)编辑寄语:因为爱心,所以美丽
  • (转)创业家杂志:UCWEB天使第一步
  • (转)视频码率,帧率和分辨率的联系与区别
  • .describe() python_Python-Win32com-Excel
  • .NET MVC 验证码
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .net访问oracle数据库性能问题
  • .NET关于 跳过SSL中遇到的问题