C# Json中的字典

C# Json中的字典,c#,json,C#,Json,我用的是C#,我需要一个带字符串键和int值的字典。Im使用EasyJson进行反序列化/序列化。此词典位于类中: public class LevelManager : MonoBehaviour { public float version { get; set; }; public int health { get; set; }; public Dictionary<string,int> powers { get; set; }; }

我用的是C#,我需要一个带字符串键和int值的字典。Im使用EasyJson进行反序列化/序列化。此词典位于类中:

public class LevelManager : MonoBehaviour
{    
    public float version  { get; set; };
    public int health  { get; set; };
    public Dictionary<string,int> powers  { get; set; };
}
另一种尝试:

"powers": {
  "Hadoken": 15,
  "Electricity": 20,
  "Rocket": 25,
  "Kick": 20
}

我还有很多。我错过了什么?用JSON格式化字典的正确方法是什么?

使用NewtonSoft.JSON,您得到的JSON是

{
    "version":1.0,
    "health":100,
    "powers":{
        "Hadoken":15,
        "Electricity":20,
        "Rocket":25,
        "Kick":20
    }
}
Dictionary
将作为普通的JSON对象导出,只包含
int
属性


您可以将POCO更改为如下所示:

public class LevelManager
{
    [JsonProperty("version")]
    public float Version { get; set; }

    [JsonProperty("health")]
    public int Health { get; set; }

    [JsonProperty("powers")]
    public Dictionary <string, int> Powers { get; set; }
}
公共类级别管理器
{
[JsonProperty(“版本”)]
公共浮点版本{get;set;}
[JsonProperty(“健康”)]
公共int运行状况{get;set;}
[JsonProperty(“权力”)]
公共字典幂{get;set;}
}
并使用以下代码正确反序列化

private static void Main(string[] args)
{
    string data = @"
    {
            'version': 0.1,
            'health': 100,
            'powers': {
              'Hadoken': 15,
              'Electricity': 20,
              'Rocket': 25,
              'Kick': 20
            }
    }";

    LevelManager level = JsonConvert.DeserializeObject<LevelManager>(data);
}
private static void Main(字符串[]args)
{
字符串数据=@“
{
“版本”:0.1,
"健康":100,,
“权力”:{
“哈多肯”:15,
"电":20,,
"火箭":25,,
“踢”:20
}
}";
LevelManager级别=JsonConvert.DeserializeObject(数据);
}

据我所知,常规列表没有字符串索引。您可以做的是:创建一个字典,添加一些条目,然后调用库的
序列化方法。这应该给你你想要的格式第二个有什么问题,因为那看起来是对的?@Archer我做了,我得到了一些真正特定于C#的东西,我正在寻找一个标准的结果。以下是我得到的:{{“Key”:{“$content”:“hadoken”,“$type”:“System.String”},“Value”:{“$content”:10,$type”:“System.Int32”},{“Key”:{“$content”:“kick”,“$type”:“System.String”},“Value”:{“$content”:20,$type:“System.Int32”},{“Key”:{“{“$content”:“fire”;“$type:“System.String”},“Value:{“$content”:30,$type”System.Int32}]我建议改为使用NewtonSoft.Json,因为它的默认输出要简单得多,并且看起来与您的第二次尝试完全相同。请参阅下面的答案,从Sir RufoChanging EasyJSON(从Unity3D资产商店下载)到Newtonsoft JSON解决了这个问题。这是图书馆的问题。
private static void Main(string[] args)
{
    string data = @"
    {
            'version': 0.1,
            'health': 100,
            'powers': {
              'Hadoken': 15,
              'Electricity': 20,
              'Rocket': 25,
              'Kick': 20
            }
    }";

    LevelManager level = JsonConvert.DeserializeObject<LevelManager>(data);
}