无法从反序列化的json(字典对象)
转换为int以下是代码:
假设你有字典对象。
Dictionary<string, object> dict = new Dictionary<string, object>();
dict.Add("key", 1);
现在我序列化&amp;反序列化。
var serializedData = JsonConvert.SerializeObject(dict);
var deserializedData = JsonConvert.DeserializeObject<Dictionary<string, object>>(serializedData);
在运行时执行此操作时出现错误
int value = (int)deserializedData["key"];
答案 0 :(得分:2)
我认为错误是JSON.NET假设您提到的数字类型为long(int64)而不是整数(int32),因此当您对对象进行装箱时,您无法直接将其拆箱到int32,因此你需要改变你的代码
int i = (int)(long) deserializedData["key"];
答案 1 :(得分:1)
您的号码被序列化为长号(Int64)。试试这个:
int value = (int)(long)deserializedData["key"];
您必须首先取消长整理,然后在取消装箱后将其转换为int。如果将上述内容转换为单独的语句,则更有意义:
object oValue = deserializedData["key"];
long longValue = (long)oValue;
int value = (int)longValue;
答案 2 :(得分:1)
因为deserializedData["key"]
的类型是Int64
(您在调试时会看到)。您无法将Int64
投放到int
(Int32
)。
你能做什么:
int value = System.Convert.ToInt32(deserializedData["key"]);