Unity——写入和读取Json信息的方法

这篇具有很好参考价值的文章主要介绍了Unity——写入和读取Json信息的方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

首先在Unity的Assets目录下新建一个Plugins文件夹,引入LitJson.dll类库!!!

编写读写脚本时,还需要再导入命名空间 using LitJson

关于Litjson文件:

可以去官网下载一个文件包;.dll文件存在于  litjson-0.5.0/bin目录。

 Litjson官网下载链接:LitJSON download | SourceForge.net

具体操作:

 先定义一个类,假如现在是要查看手机里APP的信息,把信息先放进去(这里分为简单和复杂读取时的情况,测试的时候要先把另一个注释掉!)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class APPofMine
{
    public int appNum;

    public bool phoneState;

    //简单写入和读取的时候直接用List来保存数据
    //public List<string> appList;


    //复杂写入和读取的时候定义一个List存放另一个类里的数据
    public List<AppProperty> appPropertiesList;
}

另一个类里的数据: 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AppProperty
{
    public string appName;
    public string ErenID;
    public bool ErenFavour;
    public List<int> useTimeList;
}

写入和读取的方法及调用测试代码:

代码比较长,有详细的注释!可以直接全段复制~

PS:测试时要先在Unity创建一个物体,然后把此脚本挂在物体下,另外还需要在Assets目录下创建一个 Resources 文件夹,再在Resources 文件夹下创建一个Json文件夹!!!

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LitJson;
using System.IO;


public class JosnTest : MonoBehaviour
{
    private APPofMine appOfMine;

    // Start is called before the first frame update
    void Start()
    {
        #region 简单Json信息的存储和读取

        //简单Json信息的存储和读取
        /*
        写入
        //appOfMine = new APPofMine
        //{
        //    appNum = 3,
        //    phoneState = true,
        //    appList = new List<string>()
        //    {
        //        "抖音","BiliBili","绝地求生"
        //    }
        //};

        //SaveByJson();

        //读取
        appOfMine = new APPofMine();

        appOfMine = LoadByJson();

        print(appOfMine.appNum);
        print(appOfMine.phoneState);
        foreach (var item in appOfMine.appList)
        {
            print(item);
        }
        */
        #endregion


        #region 复杂Json信息写入和读取
        写入
        //appOfMine = new APPofMine
        //{
        //    appNum = 3,
        //    phoneState = true,
        //    appPropertiesList = new List<AppProperty>()
        //};

        //AppProperty appProperty = new AppProperty
        //{
        //    appName = "抖音",
        //    ErenID = "冬瓜大浪",
        //    ErenFavour = true,
        //    useTimeList = new List<int> { 6, 7, 8 }
        //};
        //appOfMine.appPropertiesList.Add(appProperty);
        //SaveByJson();

        //读取
        appOfMine = LoadByJson();
        print(appOfMine.appNum);
        print(appOfMine.phoneState);
        foreach (var item in appOfMine.appPropertiesList)
        {
            print(item);
            print(item.appName);
            print(item.ErenFavour);
            print(item.ErenID);
            foreach (var itemGo in item.useTimeList)
            {
                print(itemGo);
            }
        }
        #endregion
    }


    #region 简单存储Json信息文件的方法
    //存储Json信息文件
    private void SaveByJson()
    {
        //找到文件要存储的路径
        string filePath = Application.dataPath/*Assets根目录*/ + "/Resources"/*后续路径*/ + "/APPofMine.json"/*文件名*/;

        //利用JsonMapper将 信息类对象(字段名) 转化成 json格式 的 字符串
        string saveJsonStr = JsonMapper.ToJson(appOfMine);

        //创建一个文件流将字符串写入一个文件中
        StreamWriter sw = new StreamWriter(filePath);

        //开始写入
        sw.Write(saveJsonStr);

        //关闭文件流
        sw.Close();
    }
    #endregion


    #region 简单读取Json的信息文件
    //读取Json的信息文件
    private APPofMine LoadByJson()
    {
        APPofMine appGo = new APPofMine();

        //找到需要读取文件的路径
        string filePath = Application.dataPath/*Assets根目录*/ + "/Resources"/*后续路径*/ + "/APPofMine.json"/*文件名*/;

        //先判断如果文件夹存在
        if (File.Exists(filePath))
        {
            //创建一个新的变量 sr ,用来存储读取到的数据,开始读取
            StreamReader sr = new StreamReader(filePath);

            //把读取到的信息转换成字符串的形式存储下来
            string loadJsonStr = sr.ReadToEnd();

            //关闭文件流
            sr.Close();

            //存储读取到的数据
            appGo = JsonMapper.ToObject<APPofMine>(loadJsonStr);
        }

        //判空
        if (appGo == null)
        {
            Debug.Log("读取Json文件失败");
        }

        return appGo;
    }
    #endregion






}

最近工作中遇到一个需求,后端的一个接口的参数是List,List中的元素又是数组,相当于二维数组。但是二维数组无法直接转成Json格式传递。 

Unity——写入和读取Json信息的方法      搞了好一会儿,记录一下方法:文章来源地址https://www.toymoban.com/news/detail-404416.html

        JsonData addressInfo = new JsonData();//创建一个addressInfo对象
        foreach (var item in companyInfo.address)
        {
            JsonData dataArray = new JsonData();//在addressInfo中再创建一个对象
            dataArray["id"] = item.id;
            dataArray["address"] = item.address;
            addressInfo.Add(dataArray);//依次添加进addressInfo
        }
        jd["address"] = addressInfo;//赋值

到了这里,关于Unity——写入和读取Json信息的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【100个 Unity实用技能】☀️ | Unity读取本地文件(Json,txt等)的三种方法示例

    老规矩,先介绍一下 Unity 的科普小知识: Unity 是 实时3D互动内容创作和运营平台 。 包括 游戏开发 、 美术 、 建筑 、 汽车设计 、 影视 在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和

    2023年04月08日
    浏览(66)
  • 发那科机器人二次开发 C#读取和写入数据,可以获取点位信息

    发那科机器人二次开发 C#读取和写入数据,可以获取点位信息。 非常适合进行二次开发及制作MES系统。 标题:发那科机器人二次开发中C#读取和写入数据的应用与实践 摘要:本文主要介绍了如何在发那科机器人二次开发中利用C#编程实现数据的读取和写入功能,并探讨了这一

    2024年04月23日
    浏览(59)
  • 读取JSON文件 如何在Unity中读取Json文件中的数据

    Josn是一种轻量级的数据交换格式,JSON能够描述四种简单的类型(字符串、数字、布尔值及null)和两种结构化类型(对象及数组),在Unity里经常用Json来处理大量的字符串,容易解析,效率非常快。 基本结构 1、语法 数据存在键值对中 数据由逗号分隔 花括号保存对象 方括号保存

    2024年02月15日
    浏览(48)
  • Unity——JSON的读取

    在实际中,读取JSON比保存JSON重要得多。因为存档、发送数据包往往可以采用其他序列化方法,但游戏的配置文件使用JSON格式比较常见。游戏的配置数据不属于动态数据,属于游戏资源,但很适合用JSON表示。 下面以一个简单的JSON数据文件为例,演示读取JSON。从整体上看有两

    2024年02月06日
    浏览(41)
  • Unity3D操作数据之Excel表操作(创建、读取、写入、修改)

    叨唠两句: 首先使用Excel需要 导入插件 ,其次在 程序运行 期间不要打开对应的Excel文件 其次相对于一些程序使用Excel比使用数据库更具有优势 读取主要使用 Epplus 插件,后续会推出关于Epplus的 AP I讲解 读取Excel文件,需要导入一些dll文件,才能进行操作Excel数据: 如果打包

    2024年02月05日
    浏览(76)
  • Unity3D操作数据之Txt文档操作(创建、读取、写入、修改)

    Unity3D操作数据之Txt文档操作(创建、读取、写入、修改) 其实读取Txt文档非常简单、也不需要导入 插件 ,仅需引入相应的 命名空间 即可。 命名空间: using System.IO 要注意的一点是,文档格式设置为UTF-8,不然中文可能显示不太正确。 使用写入语句会自动创建对应的文档 使用

    2024年02月02日
    浏览(67)
  • c#关于文件夹/文件/文本读取遍历,写入还有表格的读取的一些方法

    c#遍历文件夹下的各种文件 将一些log写入到文本文件中: fs.Seek(offset, whence);移动文件读取的指针到指定位置 offset:开始的偏移量,也就是代表需要移动偏移的字节数 whence:给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始

    2024年02月01日
    浏览(59)
  • 【Unity】C# 创建/读取/解析JSON数据

    判断是否存在JSON数据文件没有则创建并保存

    2024年02月16日
    浏览(71)
  • 找不到资产文件project.assets.json

    NuGet 在“obj”文件夹中写入名为 project.assets.json 的文件,.NET SDK 使用该文件来获取有关要传递到编译器的包的信息 。 如果在生成过程中找不到资产文件 project.assets.json,则会发生此错误。 1.执行命令的方式解决    点击工具,分别展开命令行-开发者命令提示,打开命令提示

    2024年02月13日
    浏览(44)
  • Unity 数据读取|(四)Json文件解析(Newtonsoft.Json ,Litjson,JsonUtility,SimpleJSON)

    JSON文件是一种纯文本文件,用于存储数据,并且是基于JavaScript的一个子集。JSON文件通常用于存储和传输数据,以及在应用程序之间交换信息。它们以键值对的形式存储数据,其中键是字符串,值可以是字符串、数字、布尔值、数组、对象或null。 JSON文件通常具有.json扩展名

    2024年02月05日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包