如何使用 Unity 解析 Json 文件
Posted
技术标签:
【中文标题】如何使用 Unity 解析 Json 文件【英文标题】:How to parse Json files using Unity [duplicate] 【发布时间】:2021-07-17 14:29:56 【问题描述】:仍然在这个问题上,我知道这是一篇旧帖子,但我也在努力让 C# 解析 JSON。
我正在使用 Unity 2018.2.8f1 和 VS 2019(我也尝试过 VS 2017)。
这是我的 Json 文件(一个非常简单的文件):
"glossary":
"title": "example glossary"
这是我的 C#:
using System;
using System.IO;
using UnityEngine;
[Serializable]
public class GlossaryRoot
public Glossary Glossary get; set;
[Serializable]
public class Glossary
public string title get; set;
public class Data_Manager : MonoBehaviour
private void Start()
string filePath = Path.Combine(Application.streamingAssetsPath, "Example.json");
string dataAsJSON = File.ReadAllText(filePath);
var myData = JsonUtility.FromJson<GlossaryRoot>(dataAsJSON);
string myTitle = myData.Glossary.title;
Debug.Log(myTitle);
我收到错误: “NullReferenceException:对象引用未设置为对象的实例”
关于如何解决这个问题的任何想法?我一直在寻找解决方案,并尝试了很多东西,但仍然没有成功。
我知道有多个与此类似的问题,例如: C#, Unity3D, JSON Parsing: Failing to parse JSON into C# object
但我仍然无法让它工作。 即使我删除了“获取和设置”,我也会在控制台中得到“Null”。
感谢任何帮助。
谢谢!
【问题讨论】:
【参考方案1】:你的名字不匹配应该是public Glossary glossary
。
afaik Unity 的序列化器(因此还有内置的 JsonUtility
)不支持(反)序列化属性,而是使用字段
所以这应该可以工作
[Serializable]
public class GlossaryRoot
public Glossary glossary;
[Serializable]
public class Glossary
public string title;
【讨论】:
以上是关于如何使用 Unity 解析 Json 文件的主要内容,如果未能解决你的问题,请参考以下文章
通过 C# 在 Unity 中从 API URL 解析 JSON
C# unity (发布到安卓端中使用)解析json字符串—使用微软官方的包Newtonsoft.Json
C# unity (发布到安卓端中使用)解析json字符串—使用微软官方的包Newtonsoft.Json