免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

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

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

創新互聯建站是一家專業提供岱山企業網站建設,專注與網站設計制作、網站設計、html5、小程序制作等業務。10年已為岱山眾多企業、政府機構等服務。創新互聯專業的建站公司優惠進行中。

使用方法:

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);

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

網頁名稱:解決屬性值反序列化失敗的問題
URL標題:http://m.newbst.com/article46/gsoceg.html

成都網站建設公司_創新互聯,為您提供靜態網站品牌網站制作、、建站公司、云服務器響應式網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

外貿網站制作