Json到字典C#Unity

Json到字典C#Unity,c#,json,dictionary,unity3d,C#,Json,Dictionary,Unity3d,我正在尝试将JSONNode更改为词汇表。我已经找了几个小时的解决办法。我知道JsonUtilities不适用于字典。我尝试的每件事都给出了test4=null,没有错误 JSONNode test1 = JSON.Parse(customData); //customData is :"{\"ItemClass\":\"S\",\"Type\":\"Band\",\"Stats\":

我正在尝试将JSONNode更改为词汇表。我已经找了几个小时的解决办法。我知道JsonUtilities不适用于字典。我尝试的每件事都给出了
test4=null
,没有错误

JSONNode test1 = JSON.Parse(customData);

//customData is :"{\"ItemClass\":\"S\",\"Type\":\"Band\",\"Stats\":[{\"HP\":\"100\",\"Atk\":\"50\",\"Def\":\"25\",\"Crit\":\"10\"}]}"

               
JSONArray test2 = test1["Stats"].AsArray;

               
JSONNode  test3 = test2[0];
TEST4总是给我一个空值,我尝试将test3也更改为对象或字符串。以下是我试过的一些东西:

var test4 = JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(test3);

var test4 = JsonConvert.DeserializeObject<List<Dictionary<string, int>>>(test3);

var test4 = JsonConvert.DeserializeObject<Dictionary<string, string>(test3);

var test4 = JsonConvert.DeserializeObject<Dictionary<string, int>(test3);
var test4=JsonConvert.DeserializeObject(test3); var test4=JsonConvert.DeserializeObject(test3);
var test4=JsonConvert.DeserializeObject您更愿意使用json的正确数据结构表示(例如使用)

那你可以用

var root = JsonConvert.DeserializeObject<Root>(jsonString); 


注意:在智能手机上输入,但我希望想法变得清晰

这个答案准确地显示了如何将json移动到Unity中的Dictionary,而不是直接序列化一个Dictionary,然后反序列化它,我建议您创建键和值的列表。当您想使用JSON中的字典时,请将列表添加到空字典中。@SeLeCtRa我建议使用相反的方法,而是直接使用
Newtonsoft.Net JSON完全支持的
dictionary
test3中是否有办法访问字典(如图所示)?链接中提供的示例使用类作为我的示例,没有真正的类……也许我没有得到什么。
var root = JsonConvert.DeserializeObject<Root>(jsonString); 

foreach(var stat in root.Stats)
{
    foreach(var kvp in stat)
    {
        Debug.Log($"{kvp.Key}:{kvp.Value}");
    } 
}
[Serializable]
public class Stat
{
    public string HP; 
    public string Atk; 
    public string Def; 
    public string Crit; 
}

[Serializable]
public class Root
{
    public string ItemClass; 
    public string Type; 
    public List<Stat> Stats; 
}
var root = JsonConvert.DeserializeObject<Root>(jsonString); 
var root = JsonUtility.FromJson<Root>(jsonString);
foreach(var stat in root.Stats)
{
    Debug.Log($"HP:{stat.HP}, Ark:{stat.Atk}, Def:{stat.Def}, Crit:{stat.Crit}");
}