.Net CookieでのJsonデータのアクセス

1893 ワード

Cookieはキー値ペアでデータを保存していますが、複数のデータを1つのcookieに保存したい場合があります.これはJsonを使用する必要があります.CookieでJsonデータをどのようにアクセスするかが今日解決する問題です.
Cookieに3つの変数の値を格納する必要があるとします.
string data1 = "a";
string data2 = "b";
int data3 = 1;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

//Json  Cookie
var jsonData = ModelToJson(new { data1 , data2 , data3  });
WriteCookie("JsonData", jsonData );

// Cookie   Json
var cookieValue = ReadCookie("JsonData");
var data= (JObject)JsonConvert.DeserializeObject(cookieValue);
if(data != null)
{
    var data1= JsonValue("data1 ", "", data);
    var data2= JsonValue("data2 ", "", data);
    var data3= JsonValue("data3 ", "", data);
}
//       
public static string ModelToJson(object model)
{
    try
    {
        return JsonConvert.SerializeObject(model).ToString();
    }
    catch
    {
         return "";
    }
}

public static string JsonValue(string key, string returnValue, JObject item)
{
    if (item.Property(key) == null || item[key].ToString() == "")
        return returnValue;
    else
         return item[key].ToString();
}

public static bool WriteCookie(string strName, string strValue,int days=1)
{
    if (string.IsNullOrEmpty(strName))
            return false;
    HttpCookie cookie = new HttpCookie(strName);
    cookie.Value = strValue;
    cookie.Expires = DateTime.Now.AddDays(days);
    cookie.HttpOnly = true;
    HttpContext.Current.Response.Cookies.Add(cookie);
    return true;
}

public static string ReadCookie(string strName)
{
    if (HttpContext.Current.Request.Cookies != null
        && HttpContext.Current.Request.Cookies[strName] != null)
    {
        return HttpContext.Current.Request.Cookies[strName].Value;
    }
    else
        return "";
}