unity简单json使用

一、使用自带API

//首先定义一个类(序列化System.Serializable)
[System.Serializable]
public class Settings
{
//下面都是需要json配置的数据(json文件里面的数据名要和类里面的名字相同,不然读取不到)
    public float width;
    public float height;
    public float kinectMin;
    public float kinectMax;
    public int kinectTracked;
}
//读取
public class ReadSettings: MonoBehaviour
{
private Settings settings ;
 void Start()
    {
       string path=json文件放的地址一般放到(StreamingAssets)文件夹下
      //eg: string path = Application.streamingAssetsPath + "/json/Settings.json";
       string json = File.ReadAllText(path);
       settings = JsonUtility.FromJson<Settings>(json);
    }
}

 
 //调用
float width=settings .width;(下同)

二、使用的是Litjson

下载链接:https://pan.baidu.com/s/17a82cgciCUIswZwidbBTjQ
提取码:tlqe
Litjson放入文件夹Plugins下
在这里插入图片描述
1、无嵌套:
在这里插入图片描述

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

public class JsonManager 
{
    private static JsonManager instance;
    public static JsonManager Instance
    {
        get
        {
            if (instance == null)
            {
                instance = new JsonManager();
            }
            return instance;
        }
    }

    //读取
    public T LoadJsonDatas<T>(string path)
    {
        StreamReader sr = new StreamReader(path);
        string readContent = sr.ReadToEnd();
        T jsonDatas = JsonMapper.ToObject<T>(readContent);
        sr.Close();
        sr.Dispose();
        return jsonDatas;
    }
    //
    public T LoadFromJsonDate<T>(string UnityAssetSubPath)
    {
        try
        {
            string filePath = Application.dataPath + UnityAssetSubPath;
            T t = JsonMapper.ToObject<T>(File.ReadAllText(filePath));
            if (t == null)
            {
                Debug.Log("JsonDate=Null");
                return default(T);
            }
            return t;
        }
        catch (Exception E)
        {
            Debug.LogError(E);
            return default(T);
        }
    }

    //保存
    public string SaveJsonDate<T>(T t, string UnityAssetSubPath)
    {
        string filePath = Application.dataPath + UnityAssetSubPath;
        FileInfo file = new FileInfo(filePath);
        string jsonstr = JsonMapper.ToJson(t);
        using (System.IO.StreamWriter thefile = new StreamWriter(filePath, false, Encoding.UTF8))
        {
            thefile.WriteLine(jsonstr);
        }
        //在编辑器下
#if UNITY_EDITOR
        UnityEditor.AssetDatabase.Refresh();
#endif
        return jsonstr;
    }


}

调用方式:

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

public class JsonManagerEvent : MonoBehaviour
{
    PlayDate playDate;
    public string ManAndWoMan;
    public string Name;
    public string ID;
   
    public int Age;
    public string Birthday;
    void Start()
    {
        playDate = new PlayDate();
    }

    // Update is called once per frame
    void Update()
    {
      
        if (Input.GetKeyDown(KeyCode.R))
        {
        //读取数据
            PlayDate playDate = JsonManager.Instance.LoadFromJsonDate<PlayDate>("/StreamingAssets/Json/Play.json");
            UnityEngine.Debug.Log(playDate.ManAndWoMan);
            UnityEngine.Debug.Log(playDate.ID);
            UnityEngine.Debug.Log(playDate.Name);
            UnityEngine.Debug.Log(playDate.Age);
            UnityEngine.Debug.Log(playDate.Birthday);
        }
    }
    [ContextMenu("保存Json数据")]
    public void SaveDate()
    {
        playDate.ManAndWoMan = ManAndWoMan;
        playDate.Name = Name;
        playDate.ID = ID;
        playDate.Age = Age;
        playDate.Birthday = Birthday;
        JsonManager.Instance.SaveJsonDate(playDate, "/StreamingAssets/Json/Play.json");
    }
}
[System.Serializable]
public class PlayDate
{
    public string ManAndWoMan;
    public string ID;
    public string Name;
    public int Age;
    public string Birthday;

}

在这里插入图片描述
2、有嵌套:

在这里插入图片描述
1、如果不了解嵌套类型怎么写成可视化的对象可以参考这篇内容
我是使用相对应的名称就可以获取到对应的数据内容了

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Unity 中可以使用 .NET 的 System.Json 命名空间来处理 JSON。您可以使用 JsonDocument 类来解析 JSON 字符串,然后使用 JsonElement 类来访问 JSON 元素。 例如,下面的代码演示了如何解析一个包含数组的 JSON 字符串: ``` string jsonString = "{\"array\":[1,2,3,4,5]}"; JsonDocument json = JsonDocument.Parse(jsonString); JsonElement array = json.RootElement.GetProperty("array"); foreach (var element in array.EnumerateArray()) { Console.WriteLine(element.GetInt32()); } ``` 如果您想将 JSON 序列化为 C# 对象,您可以使用 JsonSerializer 类。例如: ``` string jsonString = "{\"name\":\"John Smith\",\"age\":30,\"city\":\"New York\"}"; Person person = JsonSerializer.Deserialize<Person>(jsonString); Console.WriteLine($"Name: {person.Name}, Age: {person.Age}, City: {person.City}"); ``` 其中,Person 是一个包含 name、age 和 city 属性的类。 希望这能帮到您。 ### 回答2: 在Unity使用JSON有几个步骤: 1. 创建一个包含JSON数据的字符串。可以手动创建字符串,也可以从外部文件中读取。 2. 创建一个可以将JSON字符串解析为对象的类。可以使用JsonUtility类中的相关方法进行解析。需要确保类的属性与JSON数据的键名完全匹配。 3. 将JSON字符串传递给JsonUtility类的相关方法,将其解析为对象。可以使用JsonUtility.FromJson()方法将JSON字符串解析为对象。解析完成后,可以使用对象的属性来访问JSON中的数据。 4. 将数据从对象中提取出来并在Unity使用。可以使用对象的属性和方法,来获取和处理JSON数据。 下面是一个简单的示例: 首先,创建一个包含JSON数据的字符串: ``` string json = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}"; ``` 然后,创建一个可以将JSON字符串解析为对象的类: ```csharp [System.Serializable] public class Person { public string name; public int age; public string city; } ``` 接下来,将JSON字符串解析为对象: ```csharp Person person = JsonUtility.FromJson<Person>(json); ``` 最后,可以通过对象的属性来访问JSON中的数据: ```csharp Debug.Log("Name: " + person.name); Debug.Log("Age: " + person.age); Debug.Log("City: " + person.city); ``` 这样就可以在Unity使用JSON数据了。需要注意的是,UnityJsonUtility类对于复杂的JSON结构或嵌套对象可能不够灵活,如果遇到这种情况,可以考虑使用第三方库如Newtonsoft.Json来解析和处理JSON。 ### 回答3: Unity使用JSON可以通过Unity自带的JsonUtility类来实现。 首先,需要引入命名空间 `using System.IO;` 和 `using UnityEngine;`。 然后,我们可以使用JsonUtility类的静态方法`JsonUtility.FromJson()`来将JSON字符串转换为对象,或使用`JsonUtility.ToJson()`将对象转换为JSON字符串。 例如,假设我们有一个名为`Player`的类,它有两个属性`name`和`score`: ```csharp [System.Serializable] public class Player { public string name; public int score; } ``` 我们可以将一个`Player`对象转换为JSON字符串: ```csharp Player player = new Player(); player.name = "Tom"; player.score = 100; string json = JsonUtility.ToJson(player); ``` 我们也可以将JSON字符串转换为`Player`对象: ```csharp string json = "{\"name\":\"Tom\",\"score\":100}"; Player player = JsonUtility.FromJson<Player>(json); ``` 注意,在使用`JsonUtility.FromJson()`方法时,需要确保类的属性名与JSON字符串中的键名一致。 此外,还可以使用`JsonUtility.FromJsonOverwrite()`方法将JSON字符串的值直接覆盖到已存在的对象上,而不是创建新的对象。 综上所述,Unity使用JSON,我们可以通过JsonUtility类来进行对象与JSON字符串的相互转换。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值