亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

解決屬性值反序列化失敗的問題

發布時間:2020-09-08 12:00:36 來源:億速云 閱讀:712 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關解決屬性值反序列化失敗的問題,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

使用方法:

InternalRecommendRequestFormModel formData = Newtonsoft.Json.JsonConvert.DeserializeObject<InternalRecommendRequestFormModel>(dataInput);

其中:InternalRecommendRequestFormModel是一個復雜的對象,屬性中又包含其他對象和屬性。  dataInput是接口傳入的JSON字符串,它是另一個接口返回的InternalRecommendRequestFormModel對象,當然數據在傳遞的過程中一些屬性發生了變化,按理應該可以正常反序列化,但是在使用的時候卻在反序列化是報錯,無法發序列化其中一個屬性。

那么我們遇到這種復雜的反序列化成對象時該怎么辦?

首先:分析知道,報錯是由于個別屬性發序列化失敗導致,那么只要可以將這部分屬性清空或者移除該屬性的序列化內容,就可以了。

那么:如何在序列化的JSON字符串移除掉一部分屬性呢?

我們首先想到的是,字符串的替換,清空,截取等等,但是想想容易出錯。能不能現將這個字符串變成一個可操作的對象(當然不是InternalRecommendRequestFormModel),然后干掉或者清空某個對象后再轉換成我們想要的對象?  其實我一開想想到object,不是任意對象都是object嗎?

開始嘗試:

object formData = Newtonsoft.Json.JsonConvert.DeserializeObject<object>(dataInput);

得到對象如下:

解決屬性值反序列化失敗的問題

在調試中發現:

((Newtonsoft.Json.Linq.JObject)(JsonConvert.DeserializeObject<object>(dataInput))).ChildrenTokens[46] ,我是可以拿到屬性值的。

也就是說,通過上述代碼可以看出,反序列化的object對象被轉換為了:Newtonsoft.Json.Linq.JObject 對象,  這個對象就是微軟給我們提供的JSON對象的一個基類,也就是說,只要你是一個對象,如果被json序列化后,它就可以幫你反序列化回來。

代碼改進為:

InternalRecommendRequestFormModel formData = new InternalRecommendRequestFormModel();Newtonsoft.Json.Linq.JObject obj = JsonConvert.DeserializeObject<Newtonsoft.Json.Linq.JObject>(dataInput);
obj.Remove("opinions");
formData = obj.ToObject<InternalRecommendRequestFormModel>();

總結:

只要JSON字符串是一個對象,當我們直接反序列化遇到,字符串中的部分屬性值不符合要求時,我們可以先將對象轉為:JObject,對對象屬性修正后,再使用JObject提供的ToObject<T>()再轉為需要轉換的對象

Newtonsoft.Json.Linq.JObject obj = JsonConvert.DeserializeObject<Newtonsoft.Json.Linq.JObject>(dataInput);

關于解決屬性值反序列化失敗的問題就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东丰县| 墨玉县| 玉田县| 迁安市| 依安县| 响水县| 涟源市| 红安县| 平阴县| 登封市| 保亭| 通化县| 宝鸡市| 中方县| 磐石市| 邢台县| 广水市| 清水河县| 高青县| 鄢陵县| 裕民县| 淮安市| 黔西县| 保靖县| 永春县| 平江县| 马尔康县| 河西区| 香河县| 五台县| 安溪县| 万载县| 辽中县| 黑山县| 连南| 麦盖提县| 南木林县| 美姑县| 临桂县| 大丰市| 崇信县|