gpt4 book ai didi

c# - 访问子对象时序列化 JSON 文件返回空对象

转载 作者:行者123 更新时间:2023-12-04 10:28:30 25 4
gpt4 key购买 nike

我正在尝试读取包含各种对象的本地 JSON 文件。但是对象总是返回null。

我知道Resources.Load<TextAsset>(_directory + _fileName).text;已成功找到该文件,因为我可以将文本输出到控制台。

enter image description here

我的目标是能够请求 key 并取回所选语言的值。即:hello_world.sp会返回 Hola, mundo .

但是,任何时候我都可以访问任何对象,例如 Debug.Log(lang.languageList.Count);我收到错误:

NullReferenceException: Object reference not set to an instance of an object



最后,我希望能够添加额外的语言值, fr , it , 等等...

谁能看到我做错了什么?

lang.json
{
"hello_world": {
"en": "Hello, World!",
"sp": "Hola, mundo"
},
"button_ok": {
"en": "Yes",
"sp": "Si"
},
"button_cancel": {
"en": "Cancel",
"sp": "Cancelar"
}
}

JSONLoad.cs
public class JSONLoader
{
private static readonly string _directory = "Langs/";
private static readonly string _fileName = "lang";

private string ReadJsonFile() { return Resources.Load<TextAsset>(_directory + _fileName).text; }

public void Load()
{
var file = ReadJsonFile();
var lang = JsonUtility.FromJson<LanguageObject>(file);

Debug.Log(lang);
}
}

[Serializable]
public class LangValue
{
public string en { get; set; }
public string sp { get; set; }
}

[Serializable]
public class LangKey
{
public string id { get; set; }
public List<LangValue> children { get; set; }
}

[Serializable]
public class LanguageObject
{
public List<LangKey> languageList { set; get; }
}

最佳答案

您的 Json 结构与您的类(class)不匹配。这不是一个列表。这是一个工作示例:

杰森:

{
"languageList":
[
{
"id": "hello_world",
"children": {
"en": "Hello, World!",
"sp": "Hola, mundo"
}
},
{
"id": "button_ok",
"children": {
"en": "Yes",
"sp": "Si"
}
},
{
"id": "button_cancel",
"children": {
"en": "Cancel",
"sp": "Cancelar"
}
}
]
}

类(class):
[Serializable]
public class LangValue
{
public string en;
public string sp;
}

[Serializable]
public class LangKey
{
public string id;
public LangValue children;
}

[Serializable]
public class LanguageObject
{
public List<LangKey> languageList;
}

PS:我不是 JsonUtility的粉丝我宁愿去 Json.Net这允许使用属性等。

关于c# - 访问子对象时序列化 JSON 文件返回空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60530170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com