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

相关文章

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

Mysql常见的SQL语句格式及实用技巧

《Mysql常见的SQL语句格式及实用技巧》本文系统梳理MySQL常见SQL语句格式,涵盖数据库与表的创建、删除、修改、查询操作,以及记录增删改查和多表关联等高级查询,同时提供索引优化、事务处理、临时... 目录一、常用语法汇总二、示例1.数据库操作2.表操作3.记录操作 4.高级查询三、实用技巧一、常用语

解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题

《解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题》:本文主要介绍解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4... 目录未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘打开pom.XM

利用Python脚本实现批量将图片转换为WebP格式

《利用Python脚本实现批量将图片转换为WebP格式》Python语言的简洁语法和库支持使其成为图像处理的理想选择,本文将介绍如何利用Python实现批量将图片转换为WebP格式的脚本,WebP作为... 目录简介1. python在图像处理中的应用2. WebP格式的原理和优势2.1 WebP格式与传统

Spring如何使用注解@DependsOn控制Bean加载顺序

《Spring如何使用注解@DependsOn控制Bean加载顺序》:本文主要介绍Spring如何使用注解@DependsOn控制Bean加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录1.javascript 前言2. 代码实现总结1. 前言默认情况下,Spring加载Bean的顺

SpringMVC高效获取JavaBean对象指南

《SpringMVC高效获取JavaBean对象指南》SpringMVC通过数据绑定自动将请求参数映射到JavaBean,支持表单、URL及JSON数据,需用@ModelAttribute、@Requ... 目录Spring MVC 获取 JavaBean 对象指南核心机制:数据绑定实现步骤1. 定义 Ja

Python打印对象所有属性和值的方法小结

《Python打印对象所有属性和值的方法小结》在Python开发过程中,调试代码时经常需要查看对象的当前状态,也就是对象的所有属性和对应的值,然而,Python并没有像PHP的print_r那样直接提... 目录python中打印对象所有属性和值的方法实现步骤1. 使用vars()和pprint()2. 使

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.