中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

發布時間: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

乐平市| 佛坪县| 石渠县| 遵义县| 玛沁县| 沙河市| 黔南| 遂宁市| 墨脱县| 天等县| 昆明市| 彭州市| 启东市| 和政县| 仁化县| 营口市| 安宁市| 乐亭县| 兴文县| 玉龙| 射阳县| 乐昌市| 湟源县| 锡林浩特市| 西乌| 邹城市| 罗平县| 禄丰县| 呼图壁县| 冀州市| 扎鲁特旗| 邳州市| 平顺县| 武强县| 库车县| 柳州市| 交口县| 邛崃市| 通道| 宝丰县| 精河县|