JSON解析

JSON解析

JSON的解析是通过使用外部API来实现的,常用的外部API有两种,一种是有Google公司推出的Gson,另一个是阿里巴巴公司推出的FastJson,来进行JSON字符串与对象的互相转换.

因为是采用外部类库进行解析,所以不管采用哪种外部API,在解析时第一步要做的就是引入JAR包.

如何引入JAR包,可以见以下两个链接:

IDEA如何导入jar包

Eclipse如何导入jar包

Gson对JSON进行解析

通过Gson对JSON进行解析,第一步要做的就是创建Gson对象,然后再开始进行转换.

将对象转换为JSON字符串:

class Love{
	int id;
	String boyFriend;
	String gireFriend;
	public Love(int id, String boyFriend, String gireFriend) {
        this.id = id;
        this.boyFriend = boyFriend;
        this.gireFriend = gireFriend;
    }
}
public class Demo1 {

    public static void main(String[] args) {
        //1.    创建Gson对象
        Gson g = new Gson();
        //2.    转换
        Love b = new Love(100,"lmz","xxq");
        String s = g.toJson(b);
        System.out.println(s);
    }
}

输出结果如下:

{"id":100,"boyFriend":"lmz","gireFriend":"xxq"}

该输出结果即为JSON格式下的输入该内容.

将JSON字符串转换为对象:

public class Demo3 {

    public static void main(String[] args) {
        //1.    创建Gson对象
        Gson g = new Gson();
        //2.    转换  : 
        //通过哈希表对数据进行存储
        HashMap data = g.fromJson("{\"id\":100,\"boyFriend\":\"lmz\",\"gireFriend\":\"xxq\",\"way\":[\"武汉出游\",\"学期浪漫\",\"每月礼物\"]}", HashMap.class);
        List page = (List) data.get("way");
        System.out.println(page.get(1));
    }
}

此处需要注意一点是,JSON中的数组通过Gson转义,是通过ArrayList集合的方式对数据进行存储的,理论上可以无限扩容和无限嵌套.

FastJson对JSON的解析

Fast J送在对JSON进行解析时不需要创建FastJson对象,直接解析即可.

将对象转换为JSON

class Love{
	int id;
	String boyFriend;
	String gireFriend;
	public Love(int id, String boyFriend, String gireFriend) {
        this.id = id;
        this.boyFriend = boyFriend;
        this.gireFriend = gireFriend;
    }
}
public class Demo4 {
    public static void main(String[] args) {
        
        Love l = new Love(001,"lmz","xxq");
        //1.    转换
        String json = JSON.toJSONString(l);
        System.out.println(json);
    }
}

FastJson和Gson对JSON的解析本质上的效率相差不大,只是厂商略有不同,在选择时,在国内更偏向于FastJson进行开发使用,但是FastJson在过去的版本中出现过大型漏洞,而Gson未出现过大型漏洞,大家可以根据不同的应用场景进行选择使用哪种方式来解析JSON.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值