首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用C#-Unity将Json文件转换为字典

如何使用C#-Unity将Json文件转换为字典
EN

Stack Overflow用户
提问于 2019-05-19 14:55:38
回答 1查看 4.3K关注 0票数 1

我正在尝试使用Unity-C#中的Json数据集,并将其转换为字典

{
1:
    {
        "uni_number": 001,
        "level" : 3,
        "Hp" : 15
    },
    2:
    {
        "uni_number": 000,
        "level" : 0,
        "Hp" : 0
    }
}

(如果需要,我可以拥有intigers字符串)当我想要保存游戏时,我还需要将字典文件转换回json文件。

我已经检查了几个不同的StackOverflow问题,但我似乎找不到答案。我尝试过使用JsonUtility将其解析为字典。

下面是我想要转换成字典的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文件转换成字典,但这可能会是一个很大的痛苦。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-19 16:21:43

我使用的是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"];

        }
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56205459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档