后端字符串,json,bean实体类之间转换

字符串,json,bean

一、添加依赖等相关

在maven项目的pom文件中添加如下依赖
以下是json相关依赖

		<dependency>
			<groupId>commons-beanutils</groupId>
			<artifactId>commons-beanutils</artifactId>
			<version>1.9.3</version>
		</dependency>
		<dependency>
			<groupId>commons-collections</groupId>
			<artifactId>commons-collections</artifactId>
			<version>3.2.1</version>
		</dependency>
		<dependency>
			<groupId>commons-lang</groupId>
			<artifactId>commons-lang</artifactId>
			<version>2.6</version>
		</dependency>
		<dependency>
			<groupId>commons-logging</groupId>
			<artifactId>commons-logging</artifactId>
			<version>1.1.1</version>
		</dependency>
		<dependency>
			<groupId>net.sf.ezmorph</groupId>
			<artifactId>ezmorph</artifactId>
			<version>1.0.6</version>
		</dependency>
		<dependency>
			<groupId>net.sf.json-lib</groupId>
			<artifactId>json-lib</artifactId>
			<version>2.2.3</version>
			<classifier>jdk15</classifier> <!-- jdk版本 -->
		</dependency>

以下是测试依赖

		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>

并创建测试文件MyTest.java

二、Bean与json对象互转

1.创建bean实体类MyBean

package com.bean;

import java.util.List;

public class MyBean {
	private String name;
	private int age;
	private List cardNum;
	public MyBean(String name, int age, List cardNum) {
		super();
		this.name = name;
		this.age = age;
		this.cardNum = cardNum;
	}
	
	public MyBean() {
		super();
		// TODO Auto-generated constructor stub
	}

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public List getCardNum() {
		return cardNum;
	}
	public void setCardNum(List cardNum) {
		this.cardNum = cardNum;
	}
	@Override
	public String toString() {
		return "MyBean [name=" + name + ", age=" + age + ", cardNum=" + cardNum + "]";
	}
}


2.在测试类MyTest.java中创建测试方法test1

	@Test
	public void test1() {
		//手动创建bean对象,并将放在list中
		List<MyBean> myBeanList = new ArrayList<>();
		List<String> cardNum1 = new ArrayList<>();
		cardNum1.add("num1");
		cardNum1.add("num2");
		cardNum1.add("num3");
		cardNum1.add("num4");
		MyBean bean1 = new MyBean("xiaoxiao", 23, cardNum1);
		List<String> cardNum2 = new ArrayList<>();
		cardNum2.add("num11");
		cardNum2.add("num22");
		cardNum2.add("num33");
		cardNum2.add("num44");
		MyBean bean2 = new MyBean("tianyuan", 33, cardNum2);
		myBeanList.add(bean1);
		myBeanList.add(bean2);
		// java bean 转为json对象
		JSONArray jsonArray = new JSONArray().fromObject(myBeanList);
		JSONObject jsonObject = new JSONObject();
		//json对象就是以key:value形式来存储的,给json对象随便添加一个Sting类型的key,然后将jsonArray放在value位置
		jsonObject.put("key", jsonArray);
		System.out.println(jsonObject);
		System.out.println(bean1);
		System.out.println(bean2);
		System.out.println("================");

		// json对象转Java bean
		//根据key得到value
		JSONArray jsonArray2 = jsonObject.getJSONArray("key");
		for (int i = 0; i < jsonArray2.size(); i++) {
		//json数组jsonArray2 里面存放的数据又是以json对象的形式存放,所以根据游标i位置以json对象接收数据
			JSONObject jsonObject2 = jsonArray2.getJSONObject(i);
			MyBean myBean = (MyBean) JSONObject.toBean(jsonObject2, MyBean.class);
			System.out.println(myBean);
		}
	}

3.输出结果

{"key":[{"cardNum":["num1","num2","num3","num4"],"name":"xiaoxiao","age":23},{"cardNum":["num11","num22","num33","num44"],"name":"tianyuan","age":33}]}
MyBean [name=xiaoxiao, age=23, cardNum=[num1, num2, num3, num4]]
MyBean [name=tianyuan, age=33, cardNum=[num11, num22, num33, num44]]
================
MyBean [name=xiaoxiao, age=23, cardNum=[num1, num2, num3, num4]]
MyBean [name=tianyuan, age=33, cardNum=[num11, num22, num33, num44]]

三、将字符串转为bean

假如外部的请求,返回的数据的格式如下:

{
	"code": "200",
	"message": "成功",
	"result": {
		"records": [
			{
				"id": "9",
				"name": "大米"
			},
			{
				"id": "10",
				"name": "小米"
			}
		]
	},
	"success": "true"
}

现要根据得到的数据,根据id获取数据库中的相应谷物的价格

1.创建bean实体类Grain

package com.bean;

public class Grain {

	private String id;
	private String name;
	private long price;
	public Grain() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Grain(String id, String name, long price) {
		super();
		this.id = id;
		this.name = name;
		this.price = price;
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public long getPrice() {
		return price;
	}
	public void setPrice(long price) {
		this.price = price;
	}
	@Override
	public String toString() {
		return "Grain [id=" + id + ", name=" + name + ", price=" + price + "]";
	}
	
}

2.在测试类MyTest.java中创建测试方法test2

	@Test
	public void test2() {
	    //手动创建模拟数据
		String dataAnalysisResult = "{\"code\":\"200\",\"message\":\"成功\",\"result\":{\"records\":[{\"id\":\"9\",\"name\":\"大米\"},{\"id\":\"10\",\"name\":\"小米\"}]},\"success\":\"true\"}";
		// 通过SONObject.fromObject将字符串转为json对象
		JSONObject jsonObject = JSONObject.fromObject(dataAnalysisResult);
		// 获取code
		String receiveCode = jsonObject.getString("code");
		System.out.println(receiveCode);
		// 获取success
		Boolean receiveSuccess = jsonObject.getBoolean("success");
		System.out.println(receiveSuccess);
		// 将json对象转换为bean实体类
		JSONObject jsonResult = jsonObject.getJSONObject("result");
		JSONArray jsonArray = jsonResult.getJSONArray("records");
		for (int i = 0; i < jsonArray.size(); i++) {
			JSONObject jsonObject2 = jsonArray.getJSONObject(i);
			Grain grain = (Grain) JSONObject.toBean(jsonObject2, Grain.class);// 这一句代码一定要有实体类的无参构造,不然无法通过运行
			System.out.println(grain);
		}
	}

3.输出结果

200
true
Grain [id=9, name=大米, price=0]
Grain [id=10, name=小米, price=0]

已经得到bean对象后面根据bean对象,根据id去数据库中查询价格,将价格赋值给price,然后将对象或者价格返回即可

此为个人学习记录,欢迎交流,如有不足之处敬请批评指正。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值