我正在尝试在Unity-C#中获取一个Json数据集并将其转换为Dictionary
{
1:
{
"uni_number": 001,
"level" : 3,
"Hp" : 15
},
2:
{
"uni_number": 000,
"level" : 0,
"Hp" : 0
}
}
(如果需要,我可以使用intigers字符串)当我要保存游戏时,还需要将字典文件转换回json文件。
我检查了几个不同的StackOverflow问题,但似乎无法弄清楚。我尝试使用JsonUtility将其解析为Dictionary。
这是我想变成字典的json文件
string json = @"1:{""uni_number"": 001,""level"" : 3,""Hp"" : 15},2:{""uni_number"": 000,""level"" : 0,""Hp"" : 0}";
这是我尝试过的事情之一,如果我可以使它工作,那么我在向其添加另一个深度之后应该可以从那里完成它。
string json = @"{""uni_number"": ""001"",""level"" : ""3"", ""Hp"": ""15""}";
Dictionary<string, string> loadedData = JsonUtility.FromJson<Dictionary<string, string>>(json);
这不会给我一个错误,但是当我尝试打印它时,它什么也不打印。这是我的打印方式。
foreach (KeyValuePair<string, string> kvp in loadedData)
{
print("Key = {0}, Value = {1}");
print(kvp.Key);
print(kvp.Value);
}
我也尝试过
string loadedData = JsonUtility.FromJson<string>(@"{""uni_number"": ""001"",""level"" : ""3"", ""Hp"": ""15""}");
print (loadedData)
,它不会打印任何内容,所以我认为我使用的JsonUtility函数错误,但是我不知道如何。
如果我无法使它正常工作,我可能可以制作自己的函数,将json文件转换为字典,但这可能会给but带来很大的麻烦。
答案 0 :(得分:1)
我正在使用Newtonsoft.Json,它的工作原理是: (请注意,每个值也是一个字典(键,值对))
string json = @"{
1:
{
""uni_number"": 001,
""level"" : 3,
""Hp"" : 15
},
2:
{
""uni_number"": 000,
""level"" : 0,
""Hp"" : 0
}
}";
var values = JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string,string>>>(json);
foreach (var uni in values)
{
//you can print values here or add to a list or ...
string uni_number= uni.Value["uni_number"];
string level= uni.Value["level"];
string Hp= uni.Value["Hp"];
}