ObjectMapper

java JSON的使用和解析

旧街凉风 提交于 2020-04-28 14:05:31
There is no royal road to learning. 博主:JavaPanda https://www.cnblogs.com/LearnAndGet/p/10009646.html 目录 1.创建json对象 1.1 创建JSONObject对象 1.2 创建JSONArray对象 2.解析json 2.1 官方json包解析 2.2 fastjson解析 2.3 jackson解析 1.创建json对象 1.1 创建JSONObject对象 使用map初始化json @Test public void test1() { Map<String, Object> map = new LinkedHashMap<String, Object>(); map.put("name", "孙笑川"); map.put("age", 25); map.put("height", 1.70); map.put("major", new String[] { "理发", "挖掘机" }); map.put("hasGirlFriend", false); map.put("car", null); map.put("house", null); //null作为value时,转换成json后不会保存 JSONObject json1 = new JSONObject(map)

用Spring Security, JWT, Vue实现一个前后端分离无状态认证Demo

為{幸葍}努か 提交于 2020-04-28 09:46:08
简介 完整代码 https://github.com/PuZhiweizuishuai/SpringSecurity-JWT-Vue-Deom 运行展示 后端 主要展示 Spring Security 与 JWT 结合使用构建后端 API 接口。 主要功能包括登陆(如何在 Spring Security 中添加验证码登陆),查找,创建,删除并对用户权限进行区分等等。 ps:由于只是 Demo,所以没有调用数据库,以上所说增删改查均在 HashMap 中完成。 前端 展示如何使用 Vue 构建前端后与后端的配合,包括跨域的设置,前端登陆拦截 并实现 POST,GET,DELETE 请求。包括如何在 Vue 中使用后端的 XSRF-TOKEN 防范 CSRF 攻击 技术栈 组件 技术 前端 Vue.js 2 后端 (REST API) SpringBoot (Java) 安全 Token Based (Spring Security, JJWT , CSRF) 前端脚手架 vue-cli3 , Webpack, NPM 后端构建 Maven 实现细节 后端搭建 基础配置 创建 Spring boot 项目,添加 JJWT 和 Spring Security 的项目依赖,这个非常简单,有很多的教程都有块内容,唯一需要注意的是,如果你使用的 Java 版本是 11,那么你还需要添加以下依赖

[Abp vNext微服务实践]

空扰寡人 提交于 2020-04-26 06:30:35
前几篇分别介绍了abp vNext微服务框架、开发环境搭建和vue element admin前端框架接入,在vue element admin中实现用户角色管理基本功能后就可以开始进行业务开发了,本篇会详细的介绍如何在abp vNext中开发业务接口和前端页面实现。 业务接口开发 业务接口就是针对业务api接口,通过abp vNext微服务中实现并发布业务接口后,前端获取接口并进行界面开发,如此就实现了abp vNext微服务的前后端分离开发。 step1:创建实体(model) abp vNext微服务框架中的业务开发同样采用了经典的ddd架构风格和ef core 的code first模式,所以一切的业务都从领域模型(domain)开始。创建数据字典模型如下: public class DataDictionary : AuditedAggregateRoot<Guid> ,ISoftDelete { [NotNull] public string Name { get ; set ; } public string Code { get ; set ; } [NotNull] public string FullName { get ; set ; } public Guid? CategoryID { get ; set ; } public string Notes {

Springboot2.x+shiro+redis(Lettuce)整合填坑

做~自己de王妃 提交于 2020-04-25 13:35:24
主要记录关键和有坑的地方 前提: 1、SpringBoot+shiro已经集成完毕,如果没有集成,先查阅之前的 Springboot2.0 集成shiro权限管理 2、redis已经安装完成 3、redis客户端使用Lettuce,这也是sprinboot2.0后默认的,与jedis的区别,自行百度 4、json使用springboot默认的 一、依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>     //在用使用shiro的情况下集成redis,可以带这个依赖,shiro-redis已经实现了shiro的redis缓存和session管理     //如果shiro和redis集成但是不交互,可以不引入,可以自定义 <dependency> <groupId>org.crazycake</groupId> <artifactId

spring boot添加 LocalDateTime 等 java8 时间类序列化和反序列化的支持

南楼画角 提交于 2020-04-25 13:34:18
由于项目将原有的 Date 类型的字段改造为 LocalDate,LocalDateTime,LocalTime 类型, 发现 spring 对项目的时间格式无法自动转换,故需手动配置下。 在 spring boot 中需在 maven 中引入 jsr-310 的支持 <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jsr310</artifactId> </dependency> 或者直接引用 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-json</artifactId> </dependency> 因为 spring boot 是使用 jackson 作为 json 序列化和反序列化工具的,故只需配置 jackson 即可。 配置如下: @Configuration public class JacksonConfig { @Bean public ObjectMapper objectMapper(){ ObjectMapper objectMapper = new ObjectMapper();

Jackson之LocalDateTime转换,无需改实体类

南楼画角 提交于 2020-04-25 08:31:34
【问题】                                   Demo: LocalDateTime dt = LocalDateTime.now(); ObjectMapper mapper = new ObjectMapper(); try { String json = mapper.writeValueAsString(dt); System.out.println(json); } catch (JsonProcessingException e) { e.printStackTrace(); } Jackson默认序列化会将LocalDateTime序列化成: {"dayOfMonth":15,"dayOfWeek":"SUNDAY","dayOfYear":258,"hour":14,"minute":6,"month":"SEPTEMBER","monthValue":9,"nano":359000000,"second":55,"year":2019,"chronology":{"id":"ISO","calendarType":"iso8601"}} 并且该字符串反序列化成LocalDateTime会报错: Cannot construct instance of `java.time.LocalDateTime` Demo: String

解决Jackson2反序列化LocalDateTime报错

十年热恋 提交于 2020-04-25 08:12:29
今天在整合redis和spring boot的时候,遇到了一个错误,记录一下。 报错如下: Could not read JSON: Cannot construct instance of `java.time.LocalDateTime` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator) 查看后发现是数据从redis中取出时,Jackson2反序列化数据处理LocalDateTime类型时出错,原因是:Jackson2在序列化LocalDateTime时输出的不是普通的字符串时间格式,而是如下所示的格式(普通时间格式:2019-02-27 12:10:17) { "date": { "year": 2019, "month": "FEBRUARY", "day": 27, "dayOfMonth": 27, "dayOfWeek": "WEDNESDAY", "era": [ "java.time.chrono.IsoEra", "CE" ], "dayOfYear": 58, "leapYear": false, "chronology": { "id": "ISO",

JavaWeb-SpringSecurity自定义登陆配置

瘦欲@ 提交于 2020-04-24 09:19:58
  系列博文   项目已上传至guthub   传送门   JavaWeb-SpringSecurity初认识   传送门   JavaWeb-SpringSecurity在数据库中查询登陆用户   传送门   JavaWeb-SpringSecurity自定义登陆页面   传送门   JavaWeb-SpringSecurity实现需求-判断请求是否以html结尾   传送门   JavaWeb-SpringSecurity自定义登陆配置    传送门   JavaWeb-SpringSecurity图片验证ImageCode   传送门   JavaWeb-SpringSecurity记住我功能   传送门   JavaWeb-SpringSecurity使用短信验证码登陆   传送门 使用Restful自定义登陆配置   自定义登陆成功后的Handler   添加hhandler类库,创建LoginSuccessHandler.class,实现用户成功登陆Handler    @Override // 登陆成功之后会调用的函数 public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, // 封装了我们的认证信息(发起的认证请求(ip,session

接手离职老哥留下来的项目,有个大坑!用springboot处理全局日期格式化

痴心易碎 提交于 2020-04-23 23:18:05
最近部门几位同事受了一些委屈相继离职,共事三年临别之际颇有不舍,待一切手续办妥帖,寒暄过后送他们出公司,几个老哥临别时冲我鬼魅一笑,我顿时心里一紧有种不好的预感,这事绝对没有这么简单。 等我接手这几个大佬的项目后,应验了我的预感,此刻我居然有点后悔,为啥送别之时没揍他们一顿!哈哈哈~ 而这种打人的冲动,在我开始优化几位老哥的项目时候,变得越来越强烈。 技术部每个月都会组织一下代码走查及优化,以前是各自审查优化自己的项目,如今几位老哥的离职他们的项目就落到了我的头上。 对于程序员来说最痛苦的事情就是接手别人的项目,还要做优化改造,因为这一点也不比重构一遍项目简单。不过,军令在前,没办法硬着头皮上吧! 有个坑 第一个优化的点就让我有点崩溃,这几个大佬的技能能力很强,一直都是我学习的榜样,但在项目里几乎所有的日期格式化都这样用 SimpleDateFormat ,像如下代码这样实现,emm~ ,受过伤的男人怎么啥事都做的出来,哈哈哈~ SvcOrderDailyStatisticsPo orderDailyStatisticsPo = new SvcOrderDailyStatisticsPo(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); Date stationTime = dateFormat

X-Admin&ABP框架开发-RBAC

你说的曾经没有我的故事 提交于 2020-04-18 07:23:00
  在业务系统需求规划过程中,通常对于诸如组织机构、用户和角色等这种基础功能,通常是将这部分功能规划到通用子域中,这也说明了,对于这部分功能来讲,是系统的基石,整个业务体系是建立于这部分基石之上的,当然,还有诸如多语言、设置管理、认证和授权等。对于这部分功能,ABP中存在这些概念,并且通过Module Zero模块完成了这些概念。 一、角色访问控制之RBAC   RBAC:Role Based Access Control,基于角色的访问控制,这在目前大多数软件中来讲已经算得上是普遍应用了,最常见的结构如下,结构简单,设计思路清晰。      但是也存在其它升级版的设计,诸如用户权限表、角色组、用户组的概念等,具体分类有RBAC0、RBAC1、RBAC2等,后者功能越来越强大,也越来越复杂。 RBAC0:是RBAC的核心思想。 RBAC1:是把RBAC的角色分层模型。 RBAC2:增加了RBAC的约束模型。 RBAC3:整合RBAC2 + RBAC1。 二、ABP中的RBAC   在Abp中,已经集成了这些概念,并在ModuleZero模块中实现了这些概念,基于IdentityServer4的ModuleZero模块完成了封装。对于我们大多数以业务为中心的开发人员来讲,不应该又去造一个轮子,而是应该开好这辆车。首先看下Abp中的RBAC模型