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

相关文章

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。

easyui同时验证账户格式和ajax是否存在

accountName: {validator: function (value, param) {if (!/^[a-zA-Z][a-zA-Z0-9_]{3,15}$/i.test(value)) {$.fn.validatebox.defaults.rules.accountName.message = '账户名称不合法(字母开头,允许4-16字节,允许字母数字下划线)';return fal

Java第二阶段---09类和对象---第三节 构造方法

第三节 构造方法 1.概念 构造方法是一种特殊的方法,主要用于创建对象以及完成对象的属性初始化操作。构造方法不能被对象调用。 2.语法 //[]中内容可有可无 访问修饰符 类名([参数列表]){ } 3.示例 public class Car {     //车特征(属性)     public String name;//车名   可以直接拿来用 说明它有初始值     pu

HTML5自定义属性对象Dataset

原文转自HTML5自定义属性对象Dataset简介 一、html5 自定义属性介绍 之前翻译的“你必须知道的28个HTML5特征、窍门和技术”一文中对于HTML5中自定义合法属性data-已经做过些介绍,就是在HTML5中我们可以使用data-前缀设置我们需要的自定义属性,来进行一些数据的存放,例如我们要在一个文字按钮上存放相对应的id: <a href="javascript:" d

php中json_decode()和json_encode()

1.json_decode() json_decode (PHP 5 >= 5.2.0, PECL json >= 1.2.0) json_decode — 对 JSON 格式的字符串进行编码 说明 mixed json_decode ( string $json [, bool $assoc ] ) 接受一个 JSON 格式的字符串并且把它转换为 PHP 变量 参数 json

[数据集][目标检测]血细胞检测数据集VOC+YOLO格式2757张4类别

数据集格式:Pascal VOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2757 标注数量(xml文件个数):2757 标注数量(txt文件个数):2757 标注类别数:4 标注类别名称:["Platelets","RBC","WBC","sickle cell"] 每个类别标注的框数:

一步一步将PlantUML类图导出为自定义格式的XMI文件

一步一步将PlantUML类图导出为自定义格式的XMI文件 说明: 首次发表日期:2024-09-08PlantUML官网: https://plantuml.com/zh/PlantUML命令行文档: https://plantuml.com/zh/command-line#6a26f548831e6a8cPlantUML XMI文档: https://plantuml.com/zh/xmi

PHP7扩展开发之对象方式使用lib库

前言 上一篇文章,我们使用的是函数方式调用lib库。这篇文章我们将使用对象的方式调用lib库。调用代码如下: <?php $hello = new hello(); $result = $hello->get(); var_dump($result); ?> 我们将在扩展中实现hello类。hello类中将依赖lib库。 代码 基础代码 这个扩展,我们将在say扩展上增加相关代码。sa

struts2中的json返回指定的多个参数

要返回指定的多个参数,就必须在struts.xml中的配置如下: <action name="goodsType_*" class="goodsTypeAction" method="{1}"> <!-- 查询商品类别信息==分页 --> <result type="json" name="goodsType_findPgae"> <!--在这一行进行指定,其中lis是一个List集合,但

hibernate修改数据库已有的对象【简化操作】

陈科肇 直接上代码: /*** 更新新的数据并并未修改旧的数据* @param oldEntity 数据库存在的实体* @param newEntity 更改后的实体* @throws IllegalAccessException * @throws IllegalArgumentException */public void updateNew(T oldEntity,T newEntity