07-JSON

一、JSON

JSON:JavaScript Object Notation,是一种轻量级的数据交换格式。
对象格式:
	一本书:
		书名
		简介
	java:
		class Book{
			private String name;
			private String info;
			......
		}
		Book book = new Book();
		book.setName("xxx");
		book.setInfo("xxx");
	js:
		var book = new Object();
		book.name = "xxx";
		book.info="xxx";
	XML:
		<book>
			<name>xxx</name>
			<info>xxx</info>
		</book>
	JSON:
		{
			"name": "xxx",
			"info":"xxx"
		}
		对象:{ }
		键值对:"键":"值"  多个键值对用逗号分隔
		数组:"键":[ ]	多个数组用逗号分隔

二、Gson

谷歌的,使用Gson需要引入gson的jar包。

1、将对象转换为JSON字符串

String json = new Gson().toJson(要转换的对象);

2、将JSON字符串转换为对象

对象 = new Gson().fromJson(JSON字符串,对象类型.class);

三、FastJson

阿里的,使用FastJson需要引入fastJson的jar包。

1、将对象转换为JSON字符串

String json = JSON.toJSONString(要转换的对象);

2、将JSON字符串转换为对象

对象 = JSON.parseObject(JSON字符串,对象类型.class);

四、案例

1、JSON数据

{
	'desc': 'OK',
	'status': 1000,
	'data': {
		'wendu': '20',
		'ganmao': '相对于今天将会出现大幅度降温,易发生感冒,请注意适当增加衣服,加强自我防护避免感冒。',
		'forecast': [{
			'fengxiang': '北风',
			'fengli': '3-4级',
			'high': '高温 27℃',
			'type': '中雨',
			'low': '低温 19℃',
			'date': '6日星期五'
		}, {
			'fengxiang': '北风',
			'fengli': '微风级',
			'high': '高温 23℃',
			'type': '大雨',
			'low': '低温 17℃',
			'date': '7日星期六'
		}, {
			'fengxiang': '北风',
			'fengli': '微风级',
			'high': '高温 26℃',
			'type': '小雨',
			'low': '低温 17℃',
			'date': '8日星期天'
		}, {
			'fengxiang': '南风',
			'fengli': '微风级',
			'high': '高温 27℃',
			'type': '多云',
			'low': '低温 15℃',
			'date': '9日星期一'
		}, {
			'fengxiang': '南风',
			'fengli': '微风级',
			'high': '高温 29℃',
			'type': '多云',
			'low': '低温 16℃',
			'date': '10日星期二'
		}],
		'yesterday': {
			'fl': '微风',
			'fx': '北风',
			'high': '高温 33℃',
			'type': '阴',
			'low': '低温 22℃',
			'date': '5日星期四'
		},
		'aqi': '58',
		'city': '成都'
	}
}

2、对应实体类

根据JSON数据,创建对应实体类。

以下实体类省略getter/setter方法、toString方法和构造方法。
public class Weather {
    private String desc;
    private int status;
    private Data data;
}

public class Data {
    private String wendu;
    private String ganmao;
    private List<Forecast> forecast;
    private Yesterday yesterday;
    private String aqi;
    private String city;
}

public class Forecast {
    private String fengxiang;
    private String fengli;
    private String high;
    private String type;
    private String low;
    private String date;
}

public class Yesterday {
    private String fl;
    private String fx;
    private String high;
    private String type;
    private String low;
    private String date;
}

3、测试类

public class Test1 {
    public static void main(String[] args) {
        //要解析的字符串
        String json = "{ 'desc': 'OK', 'status': 1000, 'data': { 'wendu': '20', 'ganmao': '相对于今天将会出现大幅度降温,易发生感冒,请注意适当增加衣服,加强自我防护避免感冒。', 'forecast': [ { 'fengxiang': '北风', 'fengli': '3-4级', 'high': '高温 27℃', 'type': '中雨', 'low': '低温 19℃', 'date': '6日星期五' }, { 'fengxiang': '北风', 'fengli': '微风级', 'high': '高温 23℃', 'type': '大雨', 'low': '低温 17℃', 'date': '7日星期六' }, { 'fengxiang': '北风', 'fengli': '微风级', 'high': '高温 26℃', 'type': '小雨', 'low': '低温 17℃', 'date': '8日星期天' }, { 'fengxiang': '南风', 'fengli': '微风级', 'high': '高温 27℃', 'type': '多云', 'low': '低温 15℃', 'date': '9日星期一' }, { 'fengxiang': '南风', 'fengli': '微风级', 'high': '高温 29℃', 'type': '多云', 'low': '低温 16℃', 'date': '10日星期二' } ], 'yesterday': { 'fl': '微风', 'fx': '北风', 'high': '高温 33℃', 'type': '阴', 'low': '低温 22℃', 'date': '5日星期四' }, 'aqi': '58', 'city': '成都' } }";
        gson(json);
        fastjson(json);
    }

    //使用谷歌的Gson
    public static void gson(String json) {
        Weather weather = new Gson().fromJson(json, Weather.class);
        System.out.println(weather);
    }

    //使用阿里的FastJson
    public static void fastjson(String json) {
        Weather weather = JSON.parseObject(json, Weather.class);
        System.out.println(weather);
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值