json 在项目中开发一个巧妙地应用

本文介绍了一种利用JSON格式优化Cookie存储的方法。通过将对象转换为JSON字符串并存储于Cookie中,实现用户设置信息的持久化。这种方法不仅简化了操作流程,还提高了数据的安全性和可读性。

   在项目中需要保存客户的信息到Cookie中,因为客户要求针对常用业务操作的操作,用户可以一次设置之后,可以长时间的使用,即使下次登录,客户仍然使用可以使用。在客户登陆需要用户常用业务操作时,首先从Session中获取,如果Session中不存在,从Cookie获取,然后转换为需要的类型。

保存信息一般的可以

有两种设计方案:

(1)将客户的常用设置信息保存数据库

(2)将客户的属性保存本地的Cookie中下次登录时获取。

 

 

本人使用Cookie保存信息,客户设置信息,在Struts2 中 Action获取时采用模型驱动(ModenDriver方式),获取设置不是很方便。

在项目的开始本人想保存信息到Cookie,下次登录时从Cookie中获取各字段同时,使用反射转换为相应的数据类型(如枚举,Long等数据类型),之后发现使用json简单,同时减少了使用反射的不安全性。简化了各种操作。

    于是本人采用JSon保存信息,将获得客户的设置信息的对象转换为json格式的字符串之后,保存到Cookie中,在用户下载登陆时可以从Cookie中获取。

 

备注:在存储JSON格式的字符串时必须将双引号转换为单引号,不然获取不到完整的数据。因为字符串是以双引号分割。项目中使用JSON将对象转换为字符串:

 

 /**
  * 将一个bean 对象转换为jsonobject对象的字符串
  *
  * @param ignoreJPATransient  是否忽略的输入的属性
  * @param excludes  对象中字符串属性数组
  * @param object  需要使用json持久化的对象
  * @return
  */
 private String jsonBuilder(boolean ignoreJPATransient, String[] excludes, Object object) {
  JsonConfig jsonConfig = new JsonConfig();
  jsonConfig.setIgnoreJPATransient(ignoreJPATransient);
  jsonConfig.setExcludes(excludes);
  JSONArray json = JSONArray.fromObject(object, jsonConfig);
  return json.toString();
 }

 

         将json字符串转换为对象的方式:

 


 /**
  * 将一个json的字符串转换bean对象
  */
 private VacationOrderConditionConvertor json2BeanfromCookie() {

 //从Cookie中获取数据

  String jsonCookies = (String) cookies.get(DEFAULT_USE_QUERY_TYPE_COOKIE);


  if (StringUtils.isNotBlank(jsonCookies)) {
   // 从JSON字符串转换Bean对象

   //备注将json对象存储到Cookie中时由于字符串中有特殊字符串,Cookie中将json对象添加
   jsonCookies = jsonCookies.substring(1, jsonCookies.length() - 1);


   JSONObject json = JSONObject.fromObject(jsonCookies);


   VacationOrderConditionConvertor tmpvc = (VacationOrderConditionConvertor) JSONObject.toBean(json, VacationOrderConditionConvertor.class);
   return tmpvc;
  }
  return null;
 }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值