字符串转java对象_Json字符串和Java对象互相转换

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

JSON字符串和Java对象互转

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

JSON可以有两种格式

一种是对象格式的

另一种是数组对象

JSON的对象格式的字符串: {"stuName":"张三","stuAge":"","age":"广州天河区"}

数据对象格式:[{"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、使用JSONObject

JSONObject strJson = JSONObject.fromObject(students);

// 2、使用JSONArray

JSONArray 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、使用JSONObject

JSONObject jsonObject = JSONObject.fromObject(objectStr);

Students students = (Students) JSONObject.toBean(jsonObject, Students.class);

// 2、使用JSONArray

JSONArray 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 lists = new ArrayList();

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\":\"广州天河区\"}]";

// 转化为list

List list = (List) 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 map = new HashMap();

map.put("first", stu);

// 1、JSONObject

JSONObject mapObject = JSONObject.fromObject(map);

System.out.println("mapObject" + mapObject.toString());

// 2、JSONArray

JSONArray 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\":\"张三\"}}";

// JSONObject

JSONObject jsonObject = JSONObject.fromObject(strObject);

Map map = new HashMap();

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的互转。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值