C# Json中的字典
我用的是C#,我需要一个带字符串键和int值的字典。Im使用EasyJson进行反序列化/序列化。此词典位于类中: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; }; }
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);
}