[英]Casting error from deserialized json in c# using newton json
無法從反序列化的json(字典對象)轉換為int
這是代碼:
假設您有字典對象。
Dictionary<string, object> dict = new Dictionary<string, object>();
dict.Add("key", 1);
現在,我將其序列化和反序列化。
var serializedData = JsonConvert.SerializeObject(dict);
var deserializedData = JsonConvert.DeserializeObject<Dictionary<string, object>>(serializedData);
當我在運行時這樣做時出現錯誤
int value = (int)deserializedData["key"];
我相信錯誤是JSON.NET假設您提到的數字是long(int64)類型而不是整數(int32),因此當您對對象進行裝箱時,您無法直接將其裝箱到int32,因此您需要進行更改您的代碼
int i = (int)(long) deserializedData["key"];
您的號碼正在序列化為長整數(Int64)。 嘗試這個:
int value = (int)(long)deserializedData["key"];
您必須先將長整型拆箱,然后再將其轉換為整數。 如果將以上內容轉換為單獨的語句,則更有意義:
object oValue = deserializedData["key"];
long longValue = (long)oValue;
int value = (int)longValue;
因為deserializedData["key"]
的類型是Int64
(調試時會看到)。 您不能將Int64
為int
( Int32
)。
你可以做什么:
int value = System.Convert.ToInt32(deserializedData["key"]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.