9

私のコードでは、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を逆シリアル化するには、次のようなことをしたかった:

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

なぜ私の最初の試みが失敗したのだろうか?そして、それを行うより良い方法があれば。

4

1 に答える 1