7

मेरी कोड में मैं Json करने के लिए है deserialize एक CookieCollection वस्तु को क्रमानुसार और स्ट्रिंग के रूप में इसे पारित, इस लक्ष्य को हासिल करने के लिए मैं इस तरह कार्य करें:एक json धारावाहिक CookieCollection

var json = Newtonsoft.Json.JsonConvert.SerializeObject(resp.Cookies); 

निम्नलिखित json

[ 
{ 
    "Comment": "", 
    "CommentUri": null, 
    "HttpOnly": false, 
    "Discard": false, 
    "Domain": "www.site.com", 
    "Expired": true, 
    "Expires": "1970-01-01T03:30:01+03:30", 
    "Name": "version", 
    "Path": "/", 
    "Port": "", 
    "Secure": false, 
    "TimeStamp": "2015-06-01T12:19:46.3293119+04:30", 
    "Value": "deleted", 
    "Version": 0 
}, 
{ 
    "Comment": "", 
    "CommentUri": null, 
    "HttpOnly": false, 
    "Discard": false, 
    "Domain": ".site.com", 
    "Expired": false, 
    "Expires": "2015-07-31T12:19:48+04:30", 
    "Name": "ADS_7", 
    "Path": "/", 
    "Port": "", 
    "Secure": false, 
    "TimeStamp": "2015-06-01T12:19:46.3449217+04:30", 
    "Value": "0", 
    "Version": 0 
} 
] 
के परिणामस्वरूप

इस json मैं इस तरह कुछ करना चाहता था deserialize करने के लिए:

var cookies = Newtonsoft.Json.JsonConvert.DeserializeObject<CookieCollection>(json); 

लेकिन यह विफल रहता है और बढ़ा JsonSerializationException

कह बना सकते हैं और पॉप्युलेट नहीं कर सकते सूची प्रकार System.Net.CookieCollection। पथ ', लाइन 1, स्थिति 1.

तो मैं निम्नलिखित और उसके अब

var tmpcookies = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Cookie>>(json); 
CookieCollection cookies = new CookieCollection(); 
tmpcookies.ForEach(cookies.Add); 

काम कर मैं तो बस यही कारण है कि मेरी पहली प्रयास विफल रहता है सोच रहा हूँ करने के लिए अपने कोड बदल? और यदि ऐसा करने का कोई अच्छा तरीका है।

+0

http://stackoverflow.com/questions/27449717/newtonsoft-json-cannot-create-and-populate-list-type कहता है ... कुकी कोलेक्शन के बजाय सूची का उपयोग करने का प्रयास करें। आप सूची कुकी सूची = कुकी कोलेक्शन.ऑफटाइप () द्वारा सूची में परिवर्तित कर सकते हैं। टॉलिस्ट(); –

+0

@PaulZahra मैं पहले से ही सूची के रूप में है! मेरा सवाल यह है कि यह 'न्यूटॉन्सॉफ्ट.जेसन.जेसन कन्वर्ट.डिसरियलइज ऑब्जेक्ट <कुकी कोलेक्शन> (जेसन);' विफल रहता है! – HadiRj

+0

कुकी कोलेक्शन कुकीज़ = नई कुकी कोलेक्शन() कैसे है; सूची के समान ही? –

उत्तर

3

JSON.NET deserializing गैर-जेनेरिक IEnumerable एस का समर्थन नहीं करता है।

CookieCollection लागू IEnumerable और ICollection, लेकिन IEnumerable<Cookie> नहीं। जब JSON.NET संग्रह को deserialize करने के लिए जाता है, यह नहीं जानता कि IEnumerable में व्यक्तिगत वस्तुओं को deserialize क्या है।

IList<Cookie> के साथ इसकी तुलना करें जिसमें एक सामान्य प्रकार पैरामीटर है। JSON.NET निर्धारित कर सकता है कि परिणामी सूची में प्रत्येक तत्व किस प्रकार का होना चाहिए।

आप टिप्पणी में चर्चा किए गए कामकाज का उपयोग करके इसे ठीक कर सकते हैं, या एक कस्टम कनवर्टर लिख सकते हैं।

संबंधित मुद्दे