Unity——JSON的读取

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

一、读取JSON

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

下面以一个简单的JSON数据文件为例,演示读取JSON。从整体上看有两种思路

  • 直接整体反序列化为数据对象
  • 通过写代码逐步读取内容
{
  "students": [
    {
      "name": "Alice",
      "age": 20,
      "major": "Computer Science"
    },
    {
      "name": "Bob",
      "age": 22,
      "major": "Engineering"
    },
    {
      "name": "Carol",
      "age": 21,
      "major": "Business"
    }
  ]
}

1、整体反序列化

LitJSON库支持直接将JSON字符串反序列化为C#对象,但是为了方便使用,最好先准备一个数据结构与JSON完全对应的对象。示例如下:

[System.Serializable]
public class Student
{
    public string name;
    public int age;
    public string major;
}

这个类使用了[System.Serializable]属性,以便在序列化和反序列化 JSON 数据时能够正确处理。该类有三个属性,分别表示学生的姓名(name)、年龄(age)和专业(major)。

 用LitJson.JsonMapper方法实现反序列化

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

public class JSONDeserializer : MonoBehaviour
{
    public TextAsset jsonFile;

    void Start()
    {
        string jsonString = jsonFile.text;
        StudentsData data = JsonMapper.ToObject<StudentsData>(jsonString);

        List<Student> students = data.students;
        
        // 遍历学生列表并输出信息
        foreach (Student student in students)
        {
            Debug.Log("Name: " + student.name);
            Debug.Log("Age: " + student.age);
            Debug.Log("Major: " + student.major);
            Debug.Log("------------------");
        }
    }
}

[System.Serializable]
public class StudentsData
{
    public List<Student> students;
}

[System.Serializable]
public class Student
{
    public string name;
    public int age;
    public string major;
}

JSON源文件应当放在Resources/Json文件夹下,将上文的脚本挂载到任意物体上即可进行测试,系统会在Console窗口中输出所有道具的信息。

可以看到,直接序列化对象的优点是简单易行,只要定义好了数据类型,就可以直接将JSON转化为方便实用的对象。但缺点也很明显,即JSON对数据类型的要求十分严格。

2、分步获取数据

下面是分布读取JSON信息的例子

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

public class JSONDeserializer : MonoBehaviour
{
    public TextAsset jsonFile;

    void Start()
    {
        string jsonString = jsonFile.text;
        JsonData jsonData = JsonMapper.ToObject(jsonString);

        // 读取顶层数据对象
        string name = (string)jsonData["name"];
        int age = (int)jsonData["age"];
        string major = (string)jsonData["major"];
        
        Debug.Log("Name: " + name);
        Debug.Log("Age: " + age);
        Debug.Log("Major: " + major);
        Debug.Log("------------------");

        // 读取嵌套对象列表
        JsonData studentsData = jsonData["students"];
        for (int i = 0; i < studentsData.Count; i++)
        {
            JsonData studentData = studentsData[i];
            string studentName = (string)studentData["name"];
            int studentAge = (int)studentData["age"];
            string studentMajor = (string)studentData["major"];

            Debug.Log("Name: " + studentName);
            Debug.Log("Age: " + studentAge);
            Debug.Log("Major: " + studentMajor);
            Debug.Log("------------------");
        }
    }
}

这个示例代码假设 JSON 数据文件的顶层结构与上述示例相同。在Start方法中,我们首先将 JSON 字符串解析为JsonData对象,然后逐行读取其中的数据。

首先,我们读取顶层数据对象的姓名、年龄和专业,并打印到日志中。然后,我们读取名为students的嵌套对象列表,使用循环迭代每个学生的数据。在每次迭代中,我们读取学生对象的姓名、年龄和专业,并打印到日志中。

通过这种方式,你可以逐行读取 JSON 数据,并按需处理其中的内容。注意要将 JSON 数据文件分配给jsonFile变量,并确保引入了 LitJson 命名空间。文章来源地址https://www.toymoban.com/news/detail-736941.html

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

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

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

相关文章

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

    首先在Unity的Assets目录下新建一个Plugins文件夹,引入LitJson.dll类库!!! 编写读写脚本时,还需要再导入命名空间 using LitJson 关于Litjson文件: 可以去官网下载一个文件包;.dll文件存在于  litjson-0.5.0/bin目录。   Litjson官网下载链接 :LitJSON download | SourceForge.net 具体操作:  先

    2023年04月08日
    浏览(47)
  • Unity 数据读取|(四)Json文件解析(Newtonsoft.Json ,Litjson,JsonUtility,SimpleJSON)

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

    2024年02月05日
    浏览(66)
  • Unity文本框解析读取mqtt服务器JSON数据

    本次内容是讲述如何将mqtt服务器中接收到的数据在Unity3D的文本框控件中显示JSON键值对中的“值”。 需求: 1.GameObject——UI——Text (将Unity 3D的文本框控件置于场景) 命名空间引用: using UnityEngine.UI; 2. Newtonsoft插件 命名空间引用: Newtonsoft.Json.Linq; 3.MQTT通讯需求: (1)h

    2023年04月08日
    浏览(81)
  • Unity中读取Json文件:基于Assets/Resources文件夹

    我好生气😤,Python,JS里面一两行代码能够搞定的Json读取,在Unity中使用C#读取Json文件超多坑,爬出来一个又来一个。 主要是JsonUtility.FromJson太不给力了。 最好的方式是,使用 https://github.com/jilleJr/Newtonsoft.Json-for-Unity 这个第三方库。详情见下。 Step 1: 先把对应的Json File放到

    2024年02月12日
    浏览(57)
  • 【100个 Unity实用技能】☀️ | Unity读取本地文件(Json,txt等)的三种方法示例

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

    2023年04月08日
    浏览(66)
  • 【Unity 3D】C#从JSON文件中读取、解析、保存数据(附源码)

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

    2024年02月11日
    浏览(80)
  • Unity解析json文件(分为json与jsonArray)

    什么是json? JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度, 那么,JSON到底是什么? JSON就是一串字符串 只不过元素会使用特定的符号标注。 {} 双括号表示对象 [] 中括号表示数组 “” 双引号内是

    2024年02月08日
    浏览(42)
  • 【Unity数据交互】JSON开山篇

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 :Unity基础实战 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,具有易于读写和解析的特点,广泛应用于各种应用程序中的数据

    2024年02月06日
    浏览(39)
  • Unity自带方法读写JSON文件

    最近使用JSON文件保存模型表情数据,简单记录一下。 首先自定义数据类,需要记录表情每帧的所有BlendShape及时间戳: 使用Unity自带的JSON读写方法: 保存与读取JSON文件: 简单记录,部分变量与方法未展示,仅供参考。

    2024年02月12日
    浏览(50)
  • 在unity中添加Newtonsoft.Json

    在Packages-packages-lock.json中修改com.unity.collab-proxy为     \\\"com.unity.collab-proxy\\\": {       \\\"version\\\": \\\"1.5.7\\\",       \\\"depth\\\": 0,       \\\"source\\\": \\\"registry\\\",       \\\"dependencies\\\": {         \\\"com.unity.nuget.newtonsoft-json\\\": \\\"2.0.0\\\"       },       \\\"url\\\": \\\"https://packages.unity.cn\\\"     },   在Packages-manifest.json中修改

    2024年02月13日
    浏览(75)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包