2019独角兽企业重金招聘Python工程师标准>>>

原文转帖于:https://www.cnblogs.com/teach/p/5791029.html

JSON字符串和Java对象互转

在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML、JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,JSON在这方面则做的很好,下面先看下JSON的格式。

JSON可以有两种格式

  • 一种是对象格式的
  • 另一种是数组对象
  1. JSON的对象格式的字符串: {"stuName":"张三","stuAge":"","age":"广州天河区"}
  2. 数据对象格式:[{"name":"李四","stuAge":30,"address":"广州越秀区"}]

从上面的两种格式可以看出对象格式和数组对象格式唯一的不同则是在对象格式的基础上加上了[],再来看具体的结构,可以看出都是以键值对的形式出现的,中间以英文状态下的逗号(,)分隔。
在前端和后端进行数据传输的时候这种格式也是很受欢迎的,后端返回json格式的字符串,前台使用js中的JSON.parse()方法把JSON字符串解析为json对象,然后进行遍历,供前端使用。

使用Json需要的Jar包:

Jar包的版本号可以忽略,目前使用过多种版本均没发现什么问题

commons-beanutils-1.9.1.jar

commons-collections-3.2.2.jar

commons-lang-2.6.jar

commons-logging-1.2.jar

ezmorph-1.0.6.jar

json-lib-2.4-jdk15.jar

编码/测试

Java普通对象和Json字符串互转

Java对象 - > Json字符串

创建一个实体类用于测试

package com.org.demo;public class Students {private String stuName;private String stuAge;private String address;public String getStuName() {return stuName;}public void setStuName(String stuName) {this.stuName = stuName;}public String getStuAge() {return stuAge;}public void setStuAge(String stuAge) {this.stuAge = stuAge;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String toString() {return "Student [stuName=" + stuName + ", stuAge=" + stuAge + ", address=" + address + "]";}
}

编写转换方法

// Java对象转JSON字符串
public static void javaToJsonStr() {Students students = new Students();students.setStuName("张三");students.setStuAge("28");students.setAddress("广州天河区");// 1、使用JSONObjectJSONObject strJson = JSONObject.fromObject(students);// 2、使用JSONArrayJSONArray strArray = JSONArray.fromObject(students);System.out.println("Java对象转JSON字符串");System.out.println("JSON:" + strJson.toString());System.out.println("Array:" + strArray.toString());
}

运行结果

Java对象转JSON字符串
JSON:{"address":"广州天河区","stuName":"张三","stuAge":"28"}
Array:[{"address":"广州天河区","stuName":"张三","stuAge":"28"}]

Json字符串 -> Java对象

public static void jsonStrToJava() {// 定义两种不同格式的字符串String objectStr = "{\"stuName\":\"张三\",\"stuAge\":\"28\",\"address\":\"广州天河区\"}";String arrayStr = "[{\"stuName\":\"张三\",\"stuAge\":\"28\",\"address\":\"广州天河区\"}]";// 1、使用JSONObjectJSONObject jsonObject = JSONObject.fromObject(objectStr);Students students = (Students) JSONObject.toBean(jsonObject, Students.class);// 2、使用JSONArrayJSONArray jsonArray = JSONArray.fromObject(arrayStr);// 获得jsonArray的第一个元素Object o = jsonArray.get(0);JSONObject jsonObject2 = JSONObject.fromObject(o);Students students2 = (Students) JSONObject.toBean(jsonObject2, Students.class);System.out.println("JSON字符串转Java对象");System.out.println("students:" + students);System.out.println("students2:" + students2);
}

运行结果

JSON字符串转Java对象
students:Student [stuName=张三, stuAge=28, address=广州天河区]
students2:Student [stuName=张三, stuAge=28, address=广州天河区]

List和Json字符串的互转

list -> Json字符串

//List转换为Json字符串
public static void listToJson() {Students stu = new Students();stu.setStuName("张三");stu.setStuAge("28");stu.setAddress("广州天河区");List<Students> lists = new ArrayList<Students>();lists.add(stu);JSONArray listArray = JSONArray.fromObject(lists);System.out.println("listArray:" + listArray.toString());
}

运行结果

listArray:[{"address":"广州天河区","stuName":"张三","stuAge":"28"}]

Json字符串 -> List

//Json字符串转换为List对象
public static void jsonToList() {String arrayStr = "[{\"stuName\":\"张三\",\"stuAge\":\"28\",\"address\":\"广州天河区\"}]";// 转化为listList<Students> list = (List<Students>) JSONArray.toList(JSONArray.fromObject(arrayStr), Students.class);for (Students svo : list) {System.out.println(svo);}// 转化为数组Students[] stuArray = (Students[]) JSONArray.toArray(JSONArray.fromObject(arrayStr), Students.class);for (Students student : stuArray) {System.out.println(student);}
}

运行结果

Student [stuName=张三, stuAge=28, address=广州天河区]
Student [stuName=张三, stuAge=28, address=广州天河区]

Map和Json字符串互转

Map -> Json字符串

//Map转Json字符串
public static void mapToJson() {Students stu = new Students();stu.setStuName("张三");stu.setStuAge("28");stu.setAddress("广州天河区");Map<String, Students> map = new HashMap<String, Students>();map.put("first", stu);// 1、JSONObjectJSONObject mapObject = JSONObject.fromObject(map);System.out.println("mapObject" + mapObject.toString());// 2、JSONArrayJSONArray mapArray = JSONArray.fromObject(map);System.out.println("mapArray:" + mapArray.toString());
}

运行结果

mapObject{"first":{"address":"广州天河区","stuName":"张三","stuAge":"28"}}
mapArray:[{"first":{"address":"广州天河区","stuName":"张三","stuAge":"28"}}]

Json字符串 -> Map

JSON字符串不能直接转化为map对象,要想取得map中的键对应的值需要别的方式

//Json字符串转Map
public static void jsonToMap() {String strObject = "{\"first\":{\"address\":\"广州天河区\",\"stuAge\":\"28\",\"stuName\":\"张三\"}}";// JSONObjectJSONObject jsonObject = JSONObject.fromObject(strObject);Map<String, Object> map = new HashMap<String, Object>();map.put("first", Students.class);// 使用了toBean方法,需要三个参数MyBean my = (MyBean) JSONObject.toBean(jsonObject, MyBean.class, map);System.out.println(my.getFirst());}

运行结果

Student [stuName=张三, stuAge=28, address=广州天河区]

MyBean对象代码

package com.org.demo;public class MyBean {private Students first;public Students getFirst() {return first;}public void setFirst(Students first) {this.first = first;}
}

使用toBean()方法是传入了三个参数,第一个是JSONObject对象,第二个是MyBean.class,第三个是一个Map对象。通过MyBean可以知道此类中要有一个first的属性,且其类型为Students,要和map中的键和值类型对应,即,first对应键 first类型对应值的类型。
关于复杂的JSON串转化为java对象的内容,在下篇中会继续说明。
本篇,主要说明了java中的bean、list、map和JSON的互转。

转载于:https://my.oschina.net/u/3826645/blog/1837496

Json字符串和Java对象互相转换相关推荐

  1. Json对象与Json字符串的转化、JSON字符串与Java对象的转换

    一.Json对象与Json字符串的转化 1.jQuery插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符 ...

  2. json java typeof_Json对象与Json字符串的转化、JSON字符串与Java对象的转换

    一.Json对象与Json字符串的转化 1.jQuery插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符 ...

  3. JSON 字符串 与 java 对象的转换

    jsonLib 经典文章:http://json-lib.sourceforge.net/xref-test/net/sf/json/TestJSONObject.html // 引入相应的包 //j ...

  4. Json——使用Json jar包实现Json字符串与Java对象或集合之间的互相转换

    总结一下利用Json相关jar包实现Java对象和集合与Json字符串之间的互相转换: 1.创建的User类: package com.ghj.packageofdomain;public class ...

  5. 对象json字符串数组 java对象,java把json的字符串转换为json对象和数组

    [Json--使用Json jar包实现Json字符串与Java对象或集合之间的互相转换] 1,[java将JSON字符串转换为实体类对象 @SuppressWarnings(unchecked)pu ...

  6. java中将json字符串_Java中JSON字符串与java对象的互换实例详解

    在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,JSON在这方面则做的很好, ...

  7. Java中JSON字符串与java对象的互换实例详解

    这篇文章主要介绍了在java中,JSON字符串与java对象的相互转换实例详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JS ...

  8. json字符串与java对象的相互转换(jackson)

    1.java对象转换为json字符串 package com.chichung.json;import com.fasterxml.jackson.core.JsonProcessingExcepti ...

  9. [JS]JSON字符串与JS对象的转换

    JSON字符串转换为JavaScript对象 使用JavaScript内置函数JSON.parse()将字符串转换为JavaScript对象 // JSON字符串 var text = '{" ...

  10. JSON字符串与Java对象的互相转换(详解)

    <第四章-核心类库> 第8节 XML与Json 1. Json 1.1 简介 JSON: JavaScript Object Notation JS对象简谱 , 是一种轻量级的数据交换格式 ...

最新文章

  1. centos7samba服务的搭建
  2. vue-devtools 的安装
  3. SecureCRT退出全屏的方法
  4. CCNP-EIGRP不等价负载均衡
  5. 【剑指offer】面试题62:圆圈中最后剩下的数字(Java)
  6. JWT的Java使用 (JJWT)
  7. 天天QQ记牌器2.37 去广告绿色版
  8. 官方JwPlayer去水印步骤
  9. 植物大战僵尸原版完整版 免安装中文版
  10. torch学习 (二十九):周杰伦歌词数据集测试循环神经网络
  11. ERP是什么管理系统?
  12. 【数学分析】集合 ① ( 集合概念 | 集合表示 | 常用的数集合 | 集合的表示 )
  13. python eel 多线程_Python + Eel + Sqlite 实现个人密码管理器
  14. Pytorch实现基于深度学习的面部表情识别(最新,非常详细)
  15. 万年历单片机C语言报告,51单片机万年历C语言
  16. matlab中水平垂直线,关于Matlab:水平-垂直线
  17. Shiro 授权(权限)
  18. vscode的中文支持
  19. 人——Web3的新平台
  20. 如何实现FlowLayout的换行操作

热门文章

  1. 白话讲解:消息队列到底解决了什么问题?
  2. 游戏设计要素探秘之术语的呼唤
  3. Hadoop 技术在电信运营商上网日志处理中的应用架构
  4. 牢记将iPhone特色硬件优势发挥到极致
  5. RESTful WebServices Cookbook中文版
  6. 网站结构优化的基本方法
  7. 微软总部首席测试专家做客中关村图书大厦“说法”
  8. 3.7 TextRNN—TextRCNN—TextAttentionRNN—HAN—FastText—代码
  9. python中计算DataFrame,Series的数据频率
  10. 如何提高go代码覆盖率_如何提高代码质量?