Я пытаюсь прочитать в локальном JSON файле, который содержит различные объекты. Но объект всегда возвращает ноль.
Я знаю, что Resources.Load<TextAsset>(_directory + _fileName).text;
успешно нашел файл, поскольку я могу вывести текст на консоль.
Моя цель - иметь возможность запросить ключ и вернуть значение для выбранного языка. ie: hello_world.sp
вернет Hola, mundo
.
Однако, когда я go получаю доступ к любому объекту, например Debug.Log(lang.languageList.Count);
, я получаю ошибку:
NullReferenceException: Ссылка на объект не установлена для экземпляра объекта
В конце концов, я хотел бы иметь возможность добавлять дополнительные языковые значения, fr
, it
, et c ...
Кто-нибудь может увидеть, что я делаю неправильно?
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; }
}