unity 本地使用Json(全套)

打印 上一主题 下一主题

主题 1864|帖子 1864|积分 5592

提示:文章有错误的地方,还望诸位大神不吝指教!
  
  

前言

本日聊一聊怎么使用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名 必须和你上面步骤创建的分别保持同等
  1. using System.Collections;
  2. using UnityEngine;
  3. using UnityEngine.Networking;
  4. using Twq;
  5. using LitJson;
  6. /// <summary>
  7. /// Json管理
  8. /// </summary>
  9. public class JsonManage : SingletonMono<JsonManage>
  10. {
  11.     protected override void Awake()
  12.     {
  13.         base.Awake();
  14.         StartCoroutine(GetInfoDataJson01());
  15.     }
  16.     /// <summary>
  17.     ///
  18.     /// </summary>
  19.     /// <returns></returns>
  20.     private IEnumerator GetInfoDataJson01()
  21.     {
  22.         UnityWebRequest webRequest = UnityWebRequest.Get(Application.streamingAssetsPath + "/Json/PhoneticText.json");
  23.         yield return webRequest.SendWebRequest();
  24.         if (webRequest.isHttpError || webRequest.isNetworkError)
  25.             Debug.Log(webRequest.error);
  26.         else
  27.         {
  28.             Root test = LitJson.JsonMapper.ToObject<Root>(webRequest.downloadHandler.text);
  29.             Debug.Log("json=" + test.PhoneticText[0].TaskIntroduction);
  30.             //全局变量 存储
  31.             GlobalVariable.PhoneticTextJson= LitJson.JsonMapper.ToObject<Root>(webRequest.downloadHandler.text);
  32.            
  33.             Debug.Log("json=" + GlobalVariable.PhoneticTextJson.PhoneticText[0].TaskIntroduction);
  34.         }
  35.     }
  36.     IEnumerator GetData()
  37.     {
  38.         UnityWebRequest request = UnityWebRequest.Get("http://www.wotimadeyebuzhidudizhishisha.com");
  39.         yield return request.SendWebRequest();
  40.         if (request.isNetworkError || request.isHttpError)
  41.         {
  42.             Debug.Log(request.error);
  43.         }
  44.         else
  45.         {
  46.             Debug.Log(request.downloadHandler.text);
  47.             JsonData objs = JsonMapper.ToObject(System.Text.Encoding.UTF8.GetString(request.downloadHandler.data, 3, request.downloadHandler.data.Length - 3));
  48.             Debug.Log(objs.ToJson());
  49.         }
  50.     }
  51. }
复制代码
四、报错: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文件
总结

好记性不如烂笔头!

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

本帖子中包含更多资源

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

x
回复

举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

麻花痒

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