json解析本地数据,使用JSONObject和JsonUtility两种方法。

发布时间:2024年01月02日

json解析丨网址、数据、其他信息


介绍

本文可直接解析本地json信息的功能示例,使用JSONObject和JsonUtility两种方法。


一、文中使用了两种方法作为配置

一种使用UnityWebRequest的方法(搭配JSON插件为JSONObject)
一种使用File文件读取方法(搭配Unity自带的JsonUtility)

二、第一种

UnityWebRequest方法

准备

JSONObject需要插件支持,不过可以在Assets Store中找到,直接搜索JSONObject就可以。
在这里插入图片描述
因为我开的Unity有点多,所以我选择添加到我的资源然后找到相应的Unity里在Package Manager里选择添加。只打开一个Unity可以直接选择加入到Unity里
在这里插入图片描述

需要在Unity里创建文件夹StreamingAssets然后把Json文件放到文件夹下(文件夹目录可以修改代码完成其他需求的文件夹目录使用)
Json格式也很简单{ "appid": "appid11111111" }
文本中只使用了一个数据作为示例。
然后把代码挂载后运行就可以直接出现了

2.代码块

using System.Collections;
using System.Collections.Generic;
using System.IO;
using Defective.JSON;
using UnityEngine;
using UnityEngine.Networking;

public class JsonParsingExample : MonoBehaviour
{

    public string Config = "config.json";
    public string appid;
    // Start is called before the first frame update
    void Start()
    {
        StartCoroutine(LoadConfig());

    }

    private IEnumerator LoadConfig()
    {
        var unityWebRequest = UnityWebRequest.Get(Path.Combine(Application.streamingAssetsPath, Config));

        yield return unityWebRequest.SendWebRequest();

        if (unityWebRequest.isHttpError || unityWebRequest.isNetworkError)
        {
            unityWebRequest.Dispose();

            Debug.Log("No config, try default ...");

            yield break;
        }

        var data = unityWebRequest.downloadHandler?.text;

        JSONObject _configJson = new JSONObject(data);

        unityWebRequest.Dispose();

        if (!string.IsNullOrWhiteSpace(_configJson["appid"].stringValue)) appid = _configJson["appid"].stringValue;

    }
}


二、第二种

第二种不需要前期配置,是用的是Unity自带的JsonUtility

using System.Collections;
using System.Collections.Generic;
using System.IO;
using Defective.JSON;
using UnityEngine;
using UnityEngine.Networking;
[SerializeField]
public class JsonUtilityUrl
{
    public string appid;

}
public class JsonParsingExample : MonoBehaviour
{

    public string Config = "config.json";
    public string appid;
    // Start is called before the first frame update
    void Start()
    {
        string _path = Path.Combine(Application.streamingAssetsPath, Config);
        if (File.Exists(_path))
        {
            string jsonContent = System.IO.File.ReadAllText(_path);
            JsonUtilityUrl urldata = JsonUtility.FromJson<JsonUtilityUrl>(jsonContent);
            if (urldata.appid != string.Empty)
                appid = urldata.appid;

            Debug.Log("TokenUrl" + appid);
        }
    }

   
}

总结

本文内容可直接使用,后期扩展。非常简单。

文章来源:https://blog.csdn.net/weixin_42746271/article/details/135343228
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。