【发布时间】:2021-09-16 14:45:40
【问题描述】:
给定如下 JSON 块,
{
"word": "dog",
"definitions": [
{
"definition": "a smooth-textured sausage of minced beef or pork usually smoked; often served on a bread roll",
"partOfSpeech": "noun"
},
{
"definition": "go after with the intent to catch",
"partOfSpeech": "verb"
}
]
}
我知道如何使用 Unity 内置的 JsonUtility 创建一个类来解析字符串...
WORDCLASS json = WORDCLASS.CreateFromJSON(someJSONstring);
print(json.word);
JsonUtility 的示例类
[System.Serializable]
public class WORDCLASS
{
public string word;
public static WordJSON CreateFromJSON(string jsonString)
{
return JsonUtility.FromJson<WordJSON>(jsonString);
}
}
我知道“定义”是一个字典数组(带有键“定义”和“partOfSpeech”......我只是不明白获取它们的正确方法......(即我想循环通过并打印出数组中的所有定义...
虽然我正在尝试使用内置的 Unity JsonUtility,但我对其他(更高效的)方法持开放态度,例如 Newton Json...
感谢您抽出宝贵时间提供帮助。
【问题讨论】:
-
我知道“定义”是一个字典数组——它看起来像是一个类数组,有两个属性
public string definition { get; set; }和public string partOfSpeech { get; set; }。当键名是可变的但它们的值有一些固定的模式时使用字典。 -
虽然我似乎记得
JsonUtility只序列化公共字段而不是属性? How to auto-generate a C# class file from a JSON string 中的工具应该可以帮助您生成类以反序列化该 JSON。例如。转到json2csharp.com,粘贴您的 JSON,检查[x] Use Fields并推送Convert,您将获得一组合理的类。 -
@dbc 感谢您提供指向 json2csharp.com 的链接...这让一切变得一清二楚!!!
-
它不是字典,而是一个简单的对象列表,每个对象有 2 个字符串字段:定义和 partOfSpeech。