【发布时间】:2020-09-09 07:39:48
【问题描述】:
我的自定义对象的属性之一是字典,我需要将整个对象转换为 json 字符串,但 JsonConvert 将字典键从 Int 更改为 String,这是我不希望发生的。
var test = new Dictionary<int, string>
{
[1] = "2"
};
var jsonDictionary = JsonConvert.SerializeObject(test, Formatting.None);
// output {"1":"2"}
我想要的输出应该是{ 1 : "2" }
【问题讨论】:
-
JSON 中不支持整数键。
-
但是如果我在做 KeyValuPair
那么它可以工作吗? -
@Haytam 任何解决方案如何解决?我的意思是我应该使用字符串键并在后端转换为 int 吗?
-
对此没有解决方案,您的密钥必须是字符串才能使 JSON 有效且“可解析”。为什么你需要你的键是整数?
-
解决方案是使用具有数字索引的数组(例如,
[ , "2"]),或者处理字符串。真正的问题是您收到的输出是否可以反序列化为您期望的类型。换句话说,JsonConvert.DeserializeObject<Dictionary<int, string>>(jsonDictionary)有效吗?
标签: c# json .net-core json.net