`
longgangbai
  • 浏览: 7258957 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

阅读更多

   在项目中需要保存客户的信息到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;
 }

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics