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

相关文章

MySQL 中的 JSON 查询案例详解

《MySQL中的JSON查询案例详解》:本文主要介绍MySQL的JSON查询的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 的 jsON 路径格式基本结构路径组件详解特殊语法元素实际示例简单路径复杂路径简写操作符注意MySQL 的 J

Spring Boot中JSON数值溢出问题从报错到优雅解决办法

《SpringBoot中JSON数值溢出问题从报错到优雅解决办法》:本文主要介绍SpringBoot中JSON数值溢出问题从报错到优雅的解决办法,通过修改字段类型为Long、添加全局异常处理和... 目录一、问题背景:为什么我的接口突然报错了?二、为什么会发生这个错误?1. Java 数据类型的“容量”限制

Java对象转换的实现方式汇总

《Java对象转换的实现方式汇总》:本文主要介绍Java对象转换的多种实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java对象转换的多种实现方式1. 手动映射(Manual Mapping)2. Builder模式3. 工具类辅助映

Spring 请求之传递 JSON 数据的操作方法

《Spring请求之传递JSON数据的操作方法》JSON就是一种数据格式,有自己的格式和语法,使用文本表示一个对象或数组的信息,因此JSON本质是字符串,主要负责在不同的语言中数据传递和交换,这... 目录jsON 概念JSON 语法JSON 的语法JSON 的两种结构JSON 字符串和 Java 对象互转

HTML5表格语法格式详解

《HTML5表格语法格式详解》在HTML语法中,表格主要通过table、tr和td3个标签构成,本文通过实例代码讲解HTML5表格语法格式,感兴趣的朋友一起看看吧... 目录一、表格1.表格语法格式2.表格属性 3.例子二、不规则表格1.跨行2.跨列3.例子一、表格在html语法中,表格主要通过< tab

Spring 基于XML配置 bean管理 Bean-IOC的方法

《Spring基于XML配置bean管理Bean-IOC的方法》:本文主要介绍Spring基于XML配置bean管理Bean-IOC的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录一. spring学习的核心内容二. 基于 XML 配置 bean1. 通过类型来获取 bean2. 通过

Python中判断对象是否为空的方法

《Python中判断对象是否为空的方法》在Python开发中,判断对象是否为“空”是高频操作,但看似简单的需求却暗藏玄机,从None到空容器,从零值到自定义对象的“假值”状态,不同场景下的“空”需要精... 目录一、python中的“空”值体系二、精准判定方法对比三、常见误区解析四、进阶处理技巧五、性能优化

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

使用Python将JSON,XML和YAML数据写入Excel文件

《使用Python将JSON,XML和YAML数据写入Excel文件》JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体,本文将介绍如何... 目录如何使用python写入数据到Excel工作表用Python导入jsON数据到Excel工作表用

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown