.Net CookieでのJsonデータのアクセス
1893 ワード
Cookieはキー値ペアでデータを保存していますが、複数のデータを1つのcookieに保存したい場合があります.これはJsonを使用する必要があります.CookieでJsonデータをどのようにアクセスするかが今日解決する問題です.
Cookieに3つの変数の値を格納する必要があるとします.
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 "";
}