【Unity 3D】C#从JSON文件中读取、解析、保存数据(附源码)

这篇具有很好参考价值的文章主要介绍了【Unity 3D】C#从JSON文件中读取、解析、保存数据(附源码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式存储和表示数据,简洁和清晰的层次结构使JSON成为理想的数据交换语言,易于读者阅读和编写,同时也易于机器解析和生成,并有效的提高网络传输效率

1:写入JSON数据

生成JSON数据实例代码如下

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

public class Test_15_1 : MonoBehaviour
{
    void Start()
    {
        WriteData();
    }

    //写数据
    public void WriteData()
    {
        //新建一个数据类
        Data m_Data = new Data();
        //新建一个字段类 进行赋值
        m_Data.Person = new Person[3];
        //添加数据
        Person p1 = new Person();
        p1.Name = "张三";
        p1.Grade = 98;
        m_Data.Person[0] = p1;
        Person p2 = new Person();
        p2.Name = "李四";
        p2.Grade = 95;
        m_Data.Person[1] = p2;
        Person p3 = new Person();
        p3.Name = "王五";
        p3.Grade = 97;
        m_Data.Person[2] = p3;
        //将数据转成json
        string js = JsonUtility.ToJson(m_Data);
        //显示Json数据
        Debug.Log(js);
    }
}
[System.Serializable]
class Person
{
    public string Name;
    public int Grade;
}
[System.Serializable]
class Data
{
    public Person[] Person;
}

2:将JSON数据保存到本地文件夹

下面的代码将JSON中数据以文本格式保存到本地文件夹

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

public class Test_15_2 : MonoBehaviour
{
    void Start()
    {
        WriteData();
    }

    //写数据
    public void WriteData()
    {
        //新建一个数据类
        Data m_Data = new Data();
        //新建一个字段类 进行赋值
        m_Data.Person = new Person[3];
        //添加数据
        Person p1 = new Person();
        p1.Name = "张三";
        p1.Grade = 98;
        m_Data.Person[0] = p1;
        Person p2 = new Person();
        p2.Name = "李四";
        p2.Grade = 95;
        m_Data.Person[1] = p2;
        Person p3 = new Person();
        p3.Name = "王五";
        p3.Grade = 97;
        m_Data.Person[2] = p3;
        //将数据转成json
        string js = JsonUtility.ToJson(m_Data);
        //保存到 C盘的 Temp文件夹
//下面的代码改变保存路径即可
        string fileUrl = @"c:\Temp\jsonInfo.txt";
        //打开或者新建文档
        StreamWriter sw = new StreamWriter(fileUrl);
        //保存数据
        sw.WriteLine(js);
        //关闭文档
        sw.Close();
    }
}
[System.Serializable]
class Person
{
    public string Name;
    public int Grade;
}
[System.Serializable]
class Data
{
    public Person[] Person;
}

3:读取JSON数据

读取JSON数据用到了之前讲解过的文件的输入与输出,将使用StreamReader从文件夹中读取流数据

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

public class Test_15_3 : MonoBehaviour
{
    void Start()
    {
        string jsonData = ReadData();
        Debug.Log(jsonData);
    }
    //读取文件
    public string ReadData()
    {
        //获取到路径
        string fileUrl = @"c:\Temp\jsonInfo.txt";
        //读取文件
        StreamReader str = File.OpenText(fileUrl);
        //string类型的数据常量
        //数据保存
        string readData = str.ReadToEnd();
        str.Close();
        //返回数据
        return readData;
    }
}

4:解析JSON数据

解析JSON数据,需要生成与JSON数据类型相同的字段,如果JSON数据中有字段Person,Name,Grade,Person字段是一个数组,那么根节点就是一个带有Person数组字段的类,然后这个Person字段本身也是一个类,里面有Name和Grade字段 解析JSON数据代码如下

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

public class Test_15_4 : MonoBehaviour
{
    void Start()
    {
        //首先获取到json数据
        string json = ReadData();
        //将json数据传递给ParseData函数进行解析
        ParseData(json);
    }

    //读取文件
    public string ReadData()
    {
        //获取到路径
        string fileUrl = @"c:\Temp\jsonInfo.txt";
        //读取文件
        StreamReader str = File.OpenText(fileUrl);
        //string类型的数据常量
        //数据保存
        string readData = str.ReadToEnd();
        str.Close();
        //返回数据
        return readData;
    }

    //解析Json数据
    public void ParseData(string jsonData)
    {
        //数据解析并把数据保存到m_PersonData1 变量中
        Data m_PersonData = JsonUtility.FromJson<Data>(jsonData);
        foreach (var item in m_PersonData.Person)
        {
            Debug.Log(item.Name);
            Debug.Log(item.Grade);
        }
    }
}

创作不易 觉得有帮助请点赞关注收藏~~~文章来源地址https://www.toymoban.com/news/detail-504627.html

到了这里,关于【Unity 3D】C#从JSON文件中读取、解析、保存数据(附源码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Java如何快速读取&解析JSON数据(文件),获取想要的内容?

    手打不易,如果转摘,请注明出处! 注明原文: https://zhangxiaofan.blog.csdn.net/article/details/132764186 目录 前言 准备工作 Json数据(示例) 解析Json文件 第一步:创建一个空类 第二步:使用 Gsonformat 插件  第三步:复制Json内容,创建对应类 第四步:读取Json文件,提取目标数据

    2024年02月05日
    浏览(58)
  • JS 变量保存为本地json文件,读取本地json文件为变量

    一、变量保存为本地json文件: 第一步:把返回的数据转成json格式                  var content = json.stringify(data); 第二步:把转成blob这种格式                var blob = new blob([content], {type: \\\"text/plain;charset=utf-8\\\"}); 第三步:调用保存 saveas  和文件名字               

    2024年02月08日
    浏览(40)
  • C#读取json文件

    C# 读取 JSON 文件并读取某一个的值可以使用 Newtonsoft.Json 库。假设我们的 JSON 文件如下所示: 要读取其中的某一个的值,首先需要定义一个对应的实体类来存储 JSON 数据。例如,可以定义以下类: 然后,可以使用以下代码读取 JSON 文件,并将其反序列化为 Pers

    2024年02月13日
    浏览(25)
  • C# XML文件(相机参数保存和读取)

    XML是可扩展标记语言(Extensible Markup Language,XML)是一种数据语言,它将数据以一种简单的文本格式存储,可以被人类和几乎任何计算机理解。Microsoft在.Net Framework和其他微软产品中已经完全采用它。 XML的基本格式: C#操作XML方法详解 创建一个相机参数XML文件保存和读取的类

    2024年02月12日
    浏览(37)
  • Unity 数据读取|(五)XML文件解析(XmlDocument,XmlTextReader)

    XML ,全称为可扩展标记语言( eXtensible Markup Language ),是一种用于描述、传输和存储数据的语言。它被设计用来传输和存储数据,与 HTML 不同,XML 的主要目的不在于显示数据,而是强调数据的结构性。XML 使用类似 HTML 的标签表示数据的结构和其他信息。 XML的优点: 易于人

    2024年02月05日
    浏览(43)
  • 远程xml读取解析,将image url下载到本地,延时队列定时删除文件,图片访问路径保存在数据库中

    远程xml部分内容 mq发布端定时任务发送消息 mq消费端 1,远程xml读取 2,xml解析,将image中图片url保存在集合中 3,遍历集合,当本地不存在此图片时,下载图片至本地 4,将图片路径传给延时队列,用于稍后删除图片 5,保存自定义图片访问路径等信息到数据库 XMLUtil读取远程

    2024年02月15日
    浏览(30)
  • C#读取加载文件中的内容并修改保存

    在编写unity程序时,需要将配置文件中的内容需要读取加载到软件中,因此需要根据文件的相对路径来读取文件中的内容。代码如下: 将加载显示的数据进行修改后,在重新保存到文件中,代码如下: 字符串数组中存放,每一行需要保存的文件内容。

    2024年02月14日
    浏览(37)
  • Python对csv文件一键多值保存为json本地文件再读取加速效率(3)

    🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️‍🌈 博客主页:一晌小贪欢的博客主页 👍 该系列文章专栏:Python办公自动化专栏 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏 ❤️ 欢迎各位佬关注! ❤️ 1、给我一张表格直

    2024年02月11日
    浏览(39)
  • Unity3D中打包WEBGL后读取本地文件数据+网络请求

    首先上一编博主运行html之后报的错误:提示内存不足!!!! 1.首先排查一下webgl包的大小,不能超过2G。 2.F12查看具体错误,在这里博主的是:        a:本地读取StreamingAssets里的配置文件,序列化失败。        b:网络请求方法不能使用JsonConvert.SerializeObject将对象重新序列

    2024年02月08日
    浏览(38)
  • Open3D 文件读取与保存(Python版本)

    Open3D支持许多点云格式数据的读取与保存,如下图所示: PointCloudIO.py

    2024年02月11日
    浏览(30)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包