0
我的數據源創建表示整數數組的JSON爲「1,2,3,4,5」。我無法對此做任何事情(如將其更改爲[1,2,3,4,5]),這是我們必須處理的企業CMS。簡單字符串的Newtonsoft Json JsonSerializationException
我想在newtonsoft ToObject方法如何處理下面的代碼閱讀起來:
JValue theValue = new JValue("1,2,3")
List<int> x = theValue.ToObject<List<int>>();
我得到一個Newtonsoft.Json.JsonSerializationException。無法強制轉換或從System.String轉換爲System.Collections.Generic.List`1 [System.String]。我完全理解這一點,但我想知道Newtonsoft JSON庫是否有內置的方式將逗號分隔的字符串轉換爲List。
我想有一個比試圖檢查變量是否是逗號分隔列表更好的方法,然後將其手動轉換爲列表<>或者可能是JArray,但我錯了之前!
編輯
我想分享我的解決方案:
dynamic theValue = new JValue("1,2,3,4"); /// This is just passed in, i'm not doing this on purpose. Its to demo.
if (info.PropertyType == typeof (List<int>))
{
if (info.CanWrite)
{
if (theValue.GetType() == typeof (JValue) && theValue.Value is string)
{
theValue = JArray.Parse("[" + theValue.Value + "]");
}
info.SetValue(this, theValue.ToObject<List<int>>());
}
} else {
// do other things
這確實解決了這個問題。我相信輕微的字符串操作是可以接受的解決方案,特別是當我知道我期望的類型是逗號分隔的整數列表時,我想要的類型是列表。另外,僅供參考,JValue是Newtonsoft在嘗試反序列化「1,2,3,4,5」時提供給我的。我只是編寫代碼來向你展示我的問題。感謝您的快速解決方法! –
CarComp