json数据的相互转换

1.首先搭建环境,导入需要的jar包

gson-2.1.jar()

commons-beanutils-1.8.0.jar

commons-collections-3.2.1.jar

commons-lang-2.5.jar

commons-logging-1.2.jar

ezmorph-1.0.6.jar

json-lib-2.4-jdk15.jar

2.编写实体类

public class Person {
	private String name;
    private int age;

    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;
    }
    @Override
    public String toString() {
        return "name=" + name + ", age=" + age + "";
	}
    
}

3.编写测试类

关键代码:

//Json转换
		Gson gson = new Gson();
		List<Person> persons = new ArrayList<Person>();
		for (int i = 0; i < 10; i++) {
		     Person p = new Person();
		     p.setName("name" + i);
		     p.setAge(i * 5);
		     persons.add(p);
		}//创建一组具有Json格式的集合对象
		System.out.println(persons);//转换前
		String str1 = gson.toJson(persons);//Gson对象,它提供了toJson()方法将对象转换成Json字符串
		System.out.println(str1);//转换后
		
		String str2=str1.replace("[", "");
		System.out.println(str2);
		String str3=str2.replace("]", "");//去除json对象中的中括号
		String str4=str3.replace("},", "}!");//将单个json数据以!分隔开,方便截取
		System.out.println(str4);
		String[] str5=str4.split("!");//截取为单个json数据,变为一个存储多个json数据的字符串数组
		System.out.println(str5[0]);
		for (int i = 0; i < str5.length; i++) {
//			JSONObject jsonObject = JSONObject.fromObject(str5[i]);
//			Person persons1 =(Person) JSONObject.toBean(jsonObject, Person.class);//公司中是这样转的,这个方法需要多导入除了第一个jar包的六个jar包
			Person persons1 =(Person) gson.fromJson(str5[i], Person.class);//直接将json字符串转为对象
			System.out.println(persons1);
		}

4.这两种方法我不清楚本质的区别在哪,还是说公司框架的需要,有懂得可以解释下,谢谢了

5.代码执行情况


6.总结:json数据比较复杂时,都需要经过简单的处理,如果是直观的json字符串,直接调用方法即可,json和不同的数据类型做转换,一般也比较常用,可以单独写成一个工作类,方便以后的调用。

.附:本人新入行小菜鸟一个,很多地方写的不够完善,还希望大神们多多指教



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值