`
longgangbai
  • 浏览: 7377580 次
  • 性别: 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;
 }

 

分享到:
评论

相关推荐

    struts2 jquery json ajax 三级联动菜单

    在压缩包中,"新建 文本文档.txt"可能包含了项目的一些说明或者配置信息,而"ajax"可能是一个目录,包含了处理Ajax请求的相关文件,如Struts2的Action类、JavaScript文件或者其他的辅助资源。 综上所述,这个项目...

    Json合并压缩工具,支持添加分隔符

    在本案例中,"Json合并压缩工具"是一个专为处理JSON文件设计的实用程序,它的主要功能包括: 1. **JSON文件合并**:该工具能够将多个独立的JSON文件合并成一个文件。这在需要处理大量JSON数据时特别有用,比如日志...

    Struts2+hibernate3+JQuery+ajax+json三级联动

    在这个“三级联动”项目中,这些技术被巧妙地结合在一起,实现了数据的动态交互和展示。 Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它的主要职责是处理用户请求,控制应用程序流程,...

    巧用eval解析json对象

    本篇将聚焦于如何巧妙地使用`eval`函数来解析JSON对象,虽然在实际开发中,由于安全考虑我们通常会避免使用`eval`,但理解其工作原理对于学习JavaScript和JSON解析至关重要。 首先,JSON对象本质上是符合JSON语法的...

    wallpaperboard,基于android json的墙纸仪表板库.zip

    总结来说,wallpaperboard是一个基于Android的开源壁纸应用项目,通过巧妙运用JSON技术,实现了高效的数据获取和展示,为用户提供了丰富的壁纸选择。它的开源性质不仅促进了开发者之间的交流与合作,也为Android开发...

    俄罗斯方块(JSON封装)

    本项目“俄罗斯方块(JSON封装)”巧妙地利用了这两者的优势,实现了在网页和手机上畅玩的经典游戏——俄罗斯方块。下面,我们将详细探讨这一项目中的关键知识点。 1. **HTML5**:HTML5是超文本标记语言的最新版本,...

    C语言实现JSON的解码与编码

    JSON(JavaScript Object Notation)是...通过这些知识点,开发者可以在C语言环境中高效地处理JSON数据,无论是从服务器接收还是向服务器发送,都能游刃有余。同时,理解这些原理也有助于深入理解JSON格式和C语言编程。

    前端开源库-babel-plugin-inline-json-import

    这个Babel插件巧妙地利用了Babel的转换能力,将JSON文件的内容转换为JavaScript对象,无缝集成到源代码中。 首先,让我们了解什么是Babel。Babel是一个广泛使用的JavaScript编译器,它的主要功能是将ES6+(包括最新...

    用Qt开发的开源项目“DBA项目".rar

    在“DBA项目”中,QJson被用来进行数据的序列化和反序列化,使得数据可以在应用程序与服务器之间有效地传递和存储。 **OpenGL与QPaint:** QtOpenGL模块提供了与OpenGL图形库的接口,用于在Qt应用中实现高性能的3D...

    基于Chrome GUI核心的Electron跨平台桌面应用设计源码

    它巧妙地利用了Electron框架的核心特性,辅以Chrome的GUI,为开发者们提供了一个极为便捷的桌面应用开发环境。该项目不仅功能强大,而且支持多种编程语言,使得开发者能够灵活地应对不同的开发需求。 具体来说,该...

    Android ExpandableListView+PopupWindow+json

    在本项目"Android ExpandableListView+PopupWindow+json"中,这两个组件被巧妙地结合起来,以动态加载来自JSON数据源的信息。 `ExpandableListView`是一个可扩展的列表视图,允许用户展开和折叠各个组,每个组内...

    Python中字符串切片技术在游戏开发中的应用研究.zip

    在游戏开发中,字符串切片技术可以被巧妙地应用于多个方面,包括但不限于游戏资源的本地化、游戏状态的记录与回放、以及游戏内的对话系统等。下面将详细探讨这些应用场景,并结合具体实例来阐述Python字符串切片技术...

    模具排程序系管理系统Struts2+Json+mysql

    这个模具排程系统是Java开发中的一个优秀实例,它巧妙地融合了Struts2的控制层优势、Json的轻量化数据传输和MySQL的强大数据库管理能力,为企业提供了一套完整的模具生产管理工具。对于初学者而言,这个项目不仅展示...

    Python库 | dataclasses_json-0.2.11-py3-none-any.whl

    在实际应用中,dataclasses_json库提供了一个`@dataclass_json`装饰器,它可以附加到数据类上,实现与JSON的互操作性。例如: ```python from dataclasses import dataclass from dataclasses_json import data...

    全栈Next.js应用平台:一个支持多租户和自定义域的全栈Next.js应用程序的开发平台

    Next.js 是一个由 Vercel 公司维护的开源 JavaScript 框架,主要用于构建服务器端渲染(SSR)和静态生成(SSG)的 Web ...通过巧妙地整合这些元素,开发者可以创建一个强大且灵活的平台,满足多样化的企业和组织需求。

    基于Java企业创新项目实战的Java、Vue、TypeScript等多语言融合学习源码

    本项目是一套完整的实战型企业级创新项目学习源码,它将Java、Vue、TypeScript等多种编程语言巧妙融合,为学习者提供了一个接近真实开发环境的实践平台。 Java作为后端开发中广泛使用的语言,其稳定性和跨平台特性...

    基于Java、Vue、TypeScript、HTML和JavaScript的综合开发设计源码

    本项目正是一个综合了多种技术栈的软件开发设计案例,它巧妙地融合了Java、Vue、TypeScript、HTML和JavaScript等现代web开发技术,为构建复杂的互联网应用提供了一套完整的解决方案。 首先,Java作为后端开发的主流...

    基于JavaScript的xadmin项目HTML+Python+CSS+Shell多语言设计源码

    在一个多语言的环境中,CSS同样需要应对不同语言的长度和排版差异,以保证良好的用户体验。 Python是项目后端的主要语言,81个Python文件涉及业务逻辑处理、服务器端交互以及数据管理等方面。Python在处理复杂算法...

    树形结构ssh+mysql+json

    在这个主题"树形结构ssh+mysql+json"中,我们将探讨如何结合SSH(Spring、Struts、Hibernate)框架、MySQL数据库和JSON(JavaScript Object Notation)格式来实现一个支持N级菜单的加、删、改、查功能。 首先,SSH...

    基于Flask框架和微信小程序的跨平台开发设计源码

    本源码项目便是针对这一趋势而设计的,它巧妙地将Flask框架与微信小程序相结合,提供了一个完整的跨平台开发解决方案。Flask是一个轻量级的Web应用框架,它以其简单、灵活的特点而备受开发者青睐。微信小程序则是...

Global site tag (gtag.js) - Google Analytics