json格式与bean对象互转

2024-06-18 19:58
文章标签 json 对象 bean 格式 互转

本文主要是介绍json格式与bean对象互转,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

采用fastjson包。

JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换。

JSONObject:fastJson提供的json对象。

JSONArray:fastJson提供json数组对象。

 

 

1. 采用字符串转Json对象使用:JSONObject jsonObject = JSON.parseObject(JSON_OBJ_STR); JSON_OBJ_STR为json格式字符串。

2. json对象转字符串使用:jsonObject.toJSONString()

3. 字符串转bean对象:Student student = JSON.parseObject(JSON_OBJ_STR, new TypeReference<Student>() {});

对于TypeReference<T>,由于其构造方法使用 protected 进行修饰,所以在其他包下创建其对象的时候,要用其实现类的子类:new TypeReference<Teacher>() {}

4.字符串转List对象:

ArrayList<Student> students = JSON.parseObject(JSON_ARRAY_STR, new TypeReference<ArrayList<Student>>() {});

 

5.bean对象转json字符串: String course2 = JSON.toJSONString(course);

6.完整案例:

package com.ithiema.jedis;import java.util.ArrayList;
import java.util.List;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.ithiema.demo.Course;
import com.ithiema.demo.Student;
import com.ithiema.demo.Teacher;public class JsonTest {// json字符串-简单对象型private static final String JSON_OBJ_STR = "{\"studentName\":\"lily\",\"studentAge\":12}";// json字符串-数组类型private static final String JSON_ARRAY_STR = "[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]";// 复杂格式json字符串private static final String COMPLEX_JSON_STR = "{\"teacherName\":\"crystall\",\"teacherAge\":27,\"course\":{\"courseName\":\"english\",\"code\":1270},\"students\":[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]}";/*** json字符串-简单对象型与JSONObject之间的转换 prase vt:解析*/public static void testJSONStrToJSONObject() {JSONObject jsonObject = JSON.parseObject(JSON_OBJ_STR);// JSONObject jsonObject1 = JSONObject.parseObject(JSON_OBJ_STR);// //因为JSONObject继承了JSON,所以这样也是可以的System.out.println(jsonObject.getString("studentName") + ":" + jsonObject.getInteger("studentAge"));}/*** json字符串-数组类型与JSONArray之间的转换*/public static void testJSONStrToJSONArray() {JSONArray jsonArray = JSON.parseArray(JSON_ARRAY_STR);// JSONArray jsonArray1 =// JSONArray.parseArray(JSON_ARRAY_STR);//因为JSONArray继承了JSON,所以这样也是可以的// 遍历方式1int size = jsonArray.size();for (int i = 0; i < size; i++) {JSONObject jsonObject = jsonArray.getJSONObject(i);System.out.println(jsonObject.getString("studentName") + ":" + jsonObject.getInteger("studentAge"));}// 遍历方式2for (Object obj : jsonArray) {JSONObject jsonObject = (JSONObject) obj;System.out.println(jsonObject.getString("studentName") + ":" + jsonObject.getInteger("studentAge"));}}/*** 复杂json格式字符串与JSONObject之间的转换*/public static void testComplexJSONStrToJSONObject() {JSONObject jsonObject = JSON.parseObject(COMPLEX_JSON_STR);// JSONObject jsonObject1 =// JSONObject.parseObject(COMPLEX_JSON_STR);//因为JSONObject继承了JSON,所以这样也是可以的String teacherName = jsonObject.getString("teacherName");Integer teacherAge = jsonObject.getInteger("teacherAge");JSONObject course = jsonObject.getJSONObject("course");JSONArray students = jsonObject.getJSONArray("students");}/*** json字符串-简单对象与JavaBean_obj之间的转换*/public static void testJSONStrToJavaBeanObj() {Student student = JSON.parseObject(JSON_OBJ_STR, new TypeReference<Student>() {});// Student student1 = JSONObject.parseObject(JSON_OBJ_STR, new// TypeReference<Student>() {});//因为JSONObject继承了JSON,所以这样也是可以的System.out.println(student.getStudentName() + ":" + student.getStudentAge());}/*** json字符串-数组类型与JavaBean_List之间的转换*/public static void testJSONStrToJavaBeanList() {ArrayList<Student> students = JSON.parseObject(JSON_ARRAY_STR, new TypeReference<ArrayList<Student>>() {});// ArrayList<Student> students1 = JSONArray.parseObject(JSON_ARRAY_STR, new// TypeReference<ArrayList<Student>>() {});//因为JSONArray继承了JSON,所以这样也是可以的for (Student student : students) {System.out.println(student.getStudentName() + ":" + student.getStudentAge());}}/*** 复杂json格式字符串与JavaBean_obj之间的转换*/public static void testComplexJSONStrToJavaBean() {Teacher teacher = JSON.parseObject(COMPLEX_JSON_STR, new TypeReference<Teacher>() {});// Teacher teacher1 = JSON.parseObject(COMPLEX_JSON_STR, new// TypeReference<Teacher>() {});//因为JSONObject继承了JSON,所以这样也是可以的String teacherName = teacher.getTeacherName();Integer teacherAge = teacher.getTeacherAge();Course course = teacher.getCourse();List<Student> students = teacher.getStudents();String course2 = JSON.toJSONString(course);System.out.println(course2);}/** 1,对于JSON对象与JSON格式字符串的转换可以直接用 toJSONString()这个方法。* * 2,javaBean与JSON格式字符串之间的转换要用到:JSON.toJSONString(obj);* * 3,javaBean与json对象间的转换使用:JSON.toJSON(obj),然后使用强制类型转换,JSONObject或者JSONArray。*/public static void main(String[] args) {testComplexJSONStrToJavaBean();}
}

总结:1.json字符串 转 对象:JSON.parseObject(“字符串”,new TypeReference<类名>(){});

           2.对象转json字符串:jsonObject.toJSONstring();

补充:json对象 JSONObject 获取 内部的value时,用get+“类名”()得到。如getString("name");

用于redis存对象一般都将对象转为json字符串存入

这篇关于json格式与bean对象互转的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1072963

相关文章

Java中对象的创建和销毁过程详析

《Java中对象的创建和销毁过程详析》:本文主要介绍Java中对象的创建和销毁过程,对象的创建过程包括类加载检查、内存分配、初始化零值内存、设置对象头和执行init方法,对象的销毁过程由垃圾回收机... 目录前言对象的创建过程1. 类加载检查2China编程. 分配内存3. 初始化零值4. 设置对象头5. 执行

在 Spring Boot 中使用 @Autowired和 @Bean注解的示例详解

《在SpringBoot中使用@Autowired和@Bean注解的示例详解》本文通过一个示例演示了如何在SpringBoot中使用@Autowired和@Bean注解进行依赖注入和Bean... 目录在 Spring Boot 中使用 @Autowired 和 @Bean 注解示例背景1. 定义 Stud

关于Spring @Bean 相同加载顺序不同结果不同的问题记录

《关于Spring@Bean相同加载顺序不同结果不同的问题记录》本文主要探讨了在Spring5.1.3.RELEASE版本下,当有两个全注解类定义相同类型的Bean时,由于加载顺序不同,最终生成的... 目录问题说明测试输出1测试输出2@Bean注解的BeanDefiChina编程nition加入时机总结问题说明

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

在Java中使用ModelMapper简化Shapefile属性转JavaBean实战过程

《在Java中使用ModelMapper简化Shapefile属性转JavaBean实战过程》本文介绍了在Java中使用ModelMapper库简化Shapefile属性转JavaBean的过程,对比... 目录前言一、原始的处理办法1、使用Set方法来转换2、使用构造方法转换二、基于ModelMapper

使用C++将处理后的信号保存为PNG和TIFF格式

《使用C++将处理后的信号保存为PNG和TIFF格式》在信号处理领域,我们常常需要将处理结果以图像的形式保存下来,方便后续分析和展示,C++提供了多种库来处理图像数据,本文将介绍如何使用stb_ima... 目录1. PNG格式保存使用stb_imagephp_write库1.1 安装和包含库1.2 代码解

SpringBoot定制JSON响应数据的实现

《SpringBoot定制JSON响应数据的实现》本文主要介绍了SpringBoot定制JSON响应数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录前言一、如何使用@jsonView这个注解?二、应用场景三、实战案例注解方式编程方式总结 前言

使用Python实现PDF与SVG互转

《使用Python实现PDF与SVG互转》SVG(可缩放矢量图形)和PDF(便携式文档格式)是两种常见且广泛使用的文件格式,本文将详细介绍如何使用Python实现SVG和PDF之间的相互转... 目录使用工具使用python将SVG转换为PDF使用Python将SVG添加到现有PDF中使用Python将PD

解决Spring运行时报错:Consider defining a bean of type ‘xxx.xxx.xxx.Xxx‘ in your configuration

《解决Spring运行时报错:Considerdefiningabeanoftype‘xxx.xxx.xxx.Xxx‘inyourconfiguration》该文章主要讲述了在使用S... 目录问题分析解决方案总结问题Description:Parameter 0 of constructor in x