字符串,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,然后将对象或者价格返回即可
此为个人学习记录,欢迎交流,如有不足之处敬请批评指正。