`
longgangbai
  • 浏览: 7325969 次
  • 性别: 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...

    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 ...通过巧妙地整合这些元素,开发者可以创建一个强大且灵活的平台,满足多样化的企业和组织需求。

    树形结构ssh+mysql+json

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

    itlogger:一个带有json-server的react应用的日志

    这个应用巧妙地利用了json-server作为其后端,提供了一个模拟RESTful API的服务,使得在开发阶段无需真实的服务器环境也能进行数据操作。json-server是一个快速、开箱即用的工具,可以创建JSON文件,通过简单的...

    Android商业小项目(二手产品展示的一个平台)

    这个项目是一个基于Android平台的二手商品展示应用,旨在为用户提供一个方便、快捷的二手商品交易平台。通过这个应用,用户可以浏览各种二手商品,进行购买、出售或者交换。项目的UI设计被认为是非常经典的,这通常...

    前端项目-shepherd.zip

    “shepherd”这个名字来源于现实生活中的牧羊人,其职责是引领和指导羊群,这个概念被巧妙地应用到软件设计中,用于指导用户如何在应用中进行操作。通过这个项目,开发者可以为他们的应用程序添加自定义的向导或提示...

    电商项目框架搭建

    在电商项目框架搭建中,Android平台的开发是一个关键部分,涉及到Activity与Fragment的协同工作以及模块化开发。这里,我们将深入探讨这两个核心知识点,并结合源码分析,来理解如何高效地构建电商应用。 首先,...

    一款前后端分离基于 OpenAI 的高效翻译软件。这个工具可以读取 JSON 和 Excel(zip) 文件

    Vue.js是一款轻量级的JavaScript框架,因其易学易用和高性能的特点,在前端开发中广泛应用。在GPT-Translator中,Vue.js很可能被用来构建用户界面,提供动态、实时的翻译反馈。 综上所述,GPT-Translator是一款集成...

Global site tag (gtag.js) - Google Analytics