package com.example.demo;

import com.example.pojo.User;
import com.fasterxml.jackson.annotation.JsonView;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner; import java.util.Date;
import java.util.List; /**
* ObjectMapper Json字符串的转换处理
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class JsonTest {
@Autowired
ObjectMapper mapper; public static class User{
private String userName2;
private int age;
private String password;
private Date birthday; public User() {
} public User(String userName2) {
this.userName2 = userName2;
} public String getUserName2() {
return userName2;
} public void setUserName2(String userName2) {
this.userName2 = userName2;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public Date getBirthday() {
return birthday;
} public void setBirthday(Date birthday) {
this.birthday = birthday;
}
} @Test
public void test() throws Exception{
//对象转JSON
User user = new User();
user.setUserName2("lily");
user.setAge(26);
user.setPassword("123456");
user.setBirthday(new Date());
System.out.println(user.getClass().getDeclaredClasses());
String json = mapper.writeValueAsString(user);
System.out.println("json=" + json); //JSON串获取数据
String json2 = "{\"name\":\"lily\",\"age\":26}";
JsonNode node = this.mapper.readTree(json2);
String name = node.get("name").asText();
int age = node.get("age").asInt();
System.out.println("姓名=" + name + " ,年龄=" + age); //JSON串转对象
//com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of com.example.demo.JsonTest$User: can only instantiate non-static inner class by using default, no-argument constructor
// at [Source: {"userName":"lily"}; line: 1, column: 2]
// 方案 userName2跟对象的字段名称保持一致 public static class User{ | 内部类修改为static
String json3 = "{\"userName2\":\"lily\"}";
JsonTest obj = new JsonTest(); //public class User{ | 非静态的方式
// JsonTest.User user4 = new JsonTest.User();
// JsonTest.User user5 = obj.new User();
// System.out.println("user4=" + user4); //静态
JsonTest.User user6 = new JsonTest.User();
System.out.println("user6=" + user6); JsonTest.User user2 = mapper.readValue(json3, User.class);
String name2 = user2.getUserName2();
int age2 = user2.getAge();
System.out.println("姓名=" + name2 + " ,年龄=" + age2); //JSON串转LIST集合
String jsonStr = "[{\"userName2\":\"lily\",\"age\":26},{\"userName2\":\"scott\",\"age\":27}]";
JavaType type = mapper.getTypeFactory().constructParametricType(List.class, User.class);
List<User> list = mapper.readValue(jsonStr, type);
String msg = "";
for (User user3 : list) {
msg += " " + user3.getUserName2();
}
System.out.println("姓名=" + msg); }
}

ObjectMapper Json字符串的转换处理的更多相关文章

  1. Android项目开发全程(四)-- 将网络返回的json字符串轻松转换成listview列表

    前面几篇博文介绍了从项目搭建到获取网络字符串,对一个项目的前期整体工作进行了详细的介绍,本篇接着上篇介绍一下怎么样优雅将网络返回的json字符串轻松转换成listview列表. 先上图,看一下效果. ...

  2. JSON字符串自动转换

    package com.zkn.newlearn.json; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObj ...

  3. JAVA中使用alibaba fastjson实现JSONObject、Object、Json字符串的转换

    JAVA中使用alibaba fastjson实现JSONObject.Object.Json字符串的转换 Object转JSON字符串:String jsonStr = JSONObject.toJ ...

  4. C# 对象与JSON字符串互相转换的三种方式

    C# 对象与JSON字符串互相转换的三种方式 JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式. 关于内存对象和JSON字符串的相互转换, ...

  5. JSON字符串互相转换的三种方式和性能比较

    C# 对象与JSON字符串互相转换的三种方式 JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式. 关于内存对象和JSON字符串的相互转换, ...

  6. Java实现JSONObject对象与Json字符串互相转换

    Java实现JSONObject对象与Json字符串互相转换 JSONObject 转 JSON 字符串 Java代码: JSONObject jsonObject = new JSONObject( ...

  7. Java对象与Json字符串的转换

    Java对象与Json字符串的转换 JSON是一种轻量级的数据交换格式,常用于前后端的数据交流 后端 : 前端 Java对象 > JsonString Java对象 < jsonStrin ...

  8. js-jquery-对象与JSON字符串互相转换

    1:jQuery插件支持的转换方式 代码如下: String→Object$.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转 ...

  9. Json序列化与反序列化(对象与Json字符串的转换)--C#

    public class JsonHelper { #region Json序列化与反序列化 /// <summary> /// 将json转化为对象 /// (需要提前构造好结构一致的M ...

  10. JAVA中JSON字符串格式转换

    alibabab版本  即com.alibaba.fastjson *以下Node为实体类 //JSON字符串->Map Map map1 = (Map)JSON.parse(strJson); ...

随机推荐

  1. 一文总结Java\JDK 17发布的新特性

    ​简介: JDK 17已经于2021年3月16日如期发布.本文介绍JDK 17新特性.JDK 17于2021年9月14日正式发布(General-Availability Release).JDK 1 ...

  2. dotnet 读 WPF 源代码笔记 简单聊聊文本布局换行逻辑

    在 WPF 里面,带了基础的文本库功能,如 TextBlock 等.文本库排版的重点是在文本的分行逻辑,也就是换行逻辑,如何计算当前的文本字符串到达哪个字符就需要换到下一行的逻辑就是文本布局的重点模块 ...

  3. Raft 共识算法1-Raft基础

    Raft 共识算法1-Raft基础 Raft算法中译版地址:http://www.redisant.cn/etcd/contact 英原论文地址:https://raft.github.io/raft ...

  4. 四:海思Hi3516CV500/Hi3516DV300

    Hi3516CV500 和 Hi3516DV300 均是海思推出的 IP Camera  SoC [System-on-a-Chip:SoC芯片是一种集成电路的芯片] 芯片. 针对海思 HI3516D ...

  5. 深入剖析:如何使用Pulsar和Arthas高效排查消息队列延迟问题

    背景 前两天收到业务反馈有一个 topic 的分区消息堆积了: 根据之前的经验来看,要么是业务消费逻辑出现问题导致消费过慢,当然也有小概率是消息队列的 Bug(我们使用的是 pulsar). 排查 通 ...

  6. 【工程实践】go语言实现MerkleTree

    简介 默克尔树(MerkleTree)是一种典型的二叉树结构,其主要特点为: 最下面的叶节点包含存储数据或其哈希值: 非叶子节点(包括中间节点和根节点)的内容为它的两个孩子节点内容的哈希值. 所以底层 ...

  7. fastposter v2.15.0 从繁琐到简单,简洁好用的海报生成器

    fastposter v2.15.0 从繁琐到简单,简洁好用的海报生成器 从繁琐到简单,简洁好用的海报生成器 我很高兴向大家推荐一款令人兴奋的工具--Fastposter海报生成器.作为一名开发者,我 ...

  8. mysql如何优雅的备份数据

    MySQL 有多种备份方式,以下是几种常用的备份方式: 使用 mysqldump 命令备份数据 mysqldump 是 MySQL 自带的备份工具,可以备份指定数据库或表的数据为 SQL 文件.可以通 ...

  9. HDU-Employment Planning题解

    题目在这里 -------------------------------- Employment Planning 简单的一道dp 关键的点在于想到用枚举实现各种情况的讨论 关键的注释写在代码里了 ...

  10. CAD 标注镜像

    在代码里用镜像矩阵对标注进行镜像的时候,标注上面的文字也会被镜像掉,我在网上得到一个方法,可以解决这个问题.https://forums.autodesk.com/t5/net/dbtext-and- ...