Java obj与JSON互转(jackson)

JSON 解析

常见的json解析器:

  • jsonlib
  • Gson(谷歌)
  • fastjson(阿里)
  • jackson(Spring内置)

jackson

依赖jar包

  • jackson-annotations/
  • jackson-core/
  • jackson-databind/

官网下载地址

1. Java对象转JSON

1.1 核心对象

ObjectMapper

1.2常用转换方法

  • writeValue(参数1, obj)
  • 参数1:
    1. File: 将obj转换为json字符串,并保存到指定文件
    2. Write: 将obj对象转换为JSON字符串,并将json数据填充到字符输出流中
    3. OutputStream: 将obj对象转换为JSON字符串,并将json数据填充到字节输出流中
  • writeValueAsString(obj): 将obj对象转换为JSON字符串
  • 复杂对象如List或Map转换与普通JavaBean对象一样。

1.3常用注解

  • @JsonIgnore: 排除属性(加在类属性上)
  • @JsonFormat(pattern = "yyyy-MM-dd"): 属性值得到格式化

2.JSON转Java对象

方法:

readValue(json字符串, obj)

3.示例

import com.fasterxml.jackson.annotation.JsonIgnore;
public class User {private String id;private String name;private String sex;private String tel;private String place;@JsonIgnoreprivate String password;// getattr....// serattr....
}
package top.junebao.test;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.Test;
import top.junebao.domain.User;import java.io.IOException;public class JsonTest {private ObjectMapper objectMapper = new ObjectMapper();/*** obj对象转JSON字符串单元测试*/@Testpublic void testObjToJson() {User user = new User();user.setId("LS-N4");user.setName("公孙胜");user.setPassword("gss111111");user.setSex("男");String json = "";try {json = objectMapper.writeValueAsString(user);} catch (JsonProcessingException e) {e.printStackTrace();}System.out.println(json);}/*** json字符串转obj单元测试*/@Testpublic void testJsonToObj() {User user = null;String json = "{\"id\":\"LS-N4\",\"name\":\"公孙胜\",\"sex\":\"男\",\"tel\":null,\"place\":null}";try {user = objectMapper.readValue(json, User.class);} catch (IOException e) {e.printStackTrace();}System.out.println(user);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/457519.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何制作一个简单的APP应用软件?

如今随着移动智能手机的普及,让APP的市场一片繁荣,现在市场上的APP数量数不胜数,对于APP开发的我们很多外行人也许认为,开发APP是不是特别难,是不是只有资历很高的程序员才能够完成这个任务,或者说要想开发…

I/O重定向

每个进程都至少有3个信息:“标准输入”stdin、“标准输出”stdout、和“标准出错”stderr。标准输入通常来自键盘,标准输出和标准错误输出通常被发往屏幕(并不会保存在磁盘文件中)。有些时候,需要从文件读取输入&#…

java 自动装拆箱

title: “java 自动装拆箱” tags: Java 将基本数据类型封装成对象的过程叫做装箱(boxing),反之基本数据类型对应的包装类转换为基本数据类型的过程叫做拆箱(unboxing); 基本数据类型与其他对象的区别 基本数据类型 …

设计模式11---组合模式(Composite Pattern)

一、组合模式定义 将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compos…

Linux 多核下绑定硬件中断到不同 CPU(IRQ Affinity)

转载 - Linux 多核下绑定硬件中断到不同 CPU(IRQ Affinity) 作者 digoal 日期 2016-11-20 标签 Linux , IRQ , 中断 , CPU亲和 , 绑定中断处理CPU 背景 原文 http://www.vpsee.com/2010/07/load-balancing-with-irq-smp-affinity/ 原文 硬件中断发生频繁…

请列举你了解的分布式锁_这几种常见的“分布式锁”写法,搞懂再也不怕面试官,安排!...

什么是分布式锁?大家好,我是jack xu,今天跟大家聊一聊分布式锁。首先说下什么是分布式锁,当我们在进行下订单减库存,抢票,选课,抢红包这些业务场景时,如果在此处没有锁的控制&#x…

leetcode 268

等差数列求值 1 class Solution {2 public:3 int missingNumber(vector<int>& nums) {4 int nnums.size();5 int kn*(n1)/2;6 for(int i0;i<n;i)7 k-nums[i];8 return k;9 } 10 }; 转载于:https://www.cnblogs.…

301缓存重定向?301 Moved Permanently (from disk cache)

今天在写一个博客系统时&#xff0c;发现首页数据经常刷新不出来&#xff0c;甚至后端根本就没有接受到这个请求&#xff0c;以为是Ajax的问题&#xff0c;但通过抓包发现Ajax请求确实已经发出去了&#xff0c;但状态码是 301 Moved Permanently (from disk cache),301是永久重…

Firefox 50优化Electrolysis

Mozilla正式发布Firefox 50。最新的版本中提升了来自多个内容进程用户的用户体验&#xff0c;并修复了十几个高影响的安全漏洞。\\在Firefox最新版本的变更中&#xff0c;我们注意到了它对于Electrolysis的进一步改进。Electrolysis是Mozilla实现在后台进程中呈现和执行web相关…

ModuleNotFoundError: No module named '_ctypes' ERROR:Command errored out with exit status 1: python

Ubuntu下载 nginx 时报错&#xff1a; ERROR: Command errored out with exit status 1:command: /usr/local/bin/python3.7 -c import sys, setuptools, tokenize; sys.argv[0] ""/tmp/pip-install-7e0xdb36/uwsgi/setup.py""; __file__""/tmp…

python opc plc_PYthon简易OPC数据采集写入Access

利用hollias comm opcserver 与Python实现交互。代码如下&#xff1a;# -*- coding: utf-8 -*-from sys import *from getopt import *#from os import * 造成f open(test.txt, r) TypeError: an integer is required错误import signalimport sysimport osimport typesimport …

边工作边刷题:70天一遍leetcode: day 73

Read N Characters Given Read4 I/II 要点&#xff1a;这题的要点就是搞清楚几个变量的内在逻辑&#xff1a;只有buffer是整4 bytes的。而client要读的bytes&#xff08;需求&#xff09;和实际上disk上有的bytes&#xff08;供给&#xff09;都是不整的。所以&#xff0c; 循环…

javascript时间戳和日期字符串相互转换

1 <html xmlns"http://www.w3.org/1999/xhtml">2 <head>3 <meta http-equiv"Content-Type" content"text/html; charsetutf-8" />4 <script type"text/javascript">5 // 获取当前时间戳(以s为单位)6 var time…

wireshark 十六进制过滤_CTF流量分析之wireshark使用

01.基本介绍在CTF比赛中&#xff0c;对于流量包的分析取证是一种十分重要的题型。通常这类题目都是会提供一个包含流量数据的pcap文件&#xff0c;参赛选手通过该文件筛选和过滤其中无关的流量信息&#xff0c;根据关键流量信息找出flag或者相关线索。pcap流量包的分析通常都是…

vim 插件管理

1  进入自己的vim mkdir ./bundle/vundle 2  在vimrc同级中执行 git clone https://github.com/gmarik/vundle.git ./bundle/vundle 将一些插件文件 下载到./bundle/vundle中 3  编写自己的vim配置&#xff0c;其实很简单 set nocompatible " be iMp…

ubuntu install wiznote

sudo add-apt-repository ppa:wiznote-team #添加官方源sudo apt-get update #更新源sudo apt-get install wiznote #安装为知笔记

python 对象序列化 pickling_python操作文件——序列化pickling和JSON

当我们在内存中定义一个dict的时候&#xff0c;我们是可以随时修改变量的内容的&#xff1a;>>> ddict(namewc,age28)>>>d{name: wc, age: 28}我们可以随时修改name和age的值。但是当我们重新运行程序的时候&#xff0c;name、age的初始化值还是wc和28&#…

python实现Redis订阅发布

Redis 发布订阅 Redis 发布订阅可以用在像消息通知&#xff0c;群聊&#xff0c;定向推送&#xff0c;参数刷新加载等业务场景 发布订阅模型有三个角色&#xff1a; 发布者&#xff08;Publisher&#xff09;订阅者(Subscriber)频道(channel) 每个订阅者可以订阅多个频道&am…

nfs的快速部署

1、nfs内核自带协议模块不用安装&#xff0c;如果没有yum安装yum -y install nfs-utils2、配置vim /etc/exports #配置文件 此文件一般为空&#xff0c;编写格式为&#xff1a; /share/word 192.168.31.254(rw) 192.168.31.252(ro) # 共享/share/word目录给192.168.…

redistemplate怎么修改数据_如何使用RedisTemplate访问Redis数据结构?

在springboot项目中&#xff0c;集成各种框架变得非常容易。下面简单介绍一下如何在springboot项目中集成单机模式redis。集群模式也差不多&#xff0c;这里就不过多介绍了。首先你得安装redis服务&#xff0c;无论在linux还是windows系统上。如果没有安装&#xff0c;请自行百…