json解析(二)

上一篇讲到使用org.json包解析json数据,下面讲另一种常用的json解析方法:gson Google推出的一种解析json的方式,并对上一篇的遗漏做一些补充。

上一篇中我只是贴图,忘了对json格式做一下基本的介绍。这里稍作补充:

1、json中的数据格式:对象(就是“{}”中的),数组(“[]”中的),数字,字符串,布尔值,空值(null)。

2、json格式:“key”:“value”这种格式就是键值对,用来描述对象的某些属性,在{}中的是对象,在[]中的是数组。json是允许嵌套的。

------------------------------------------------------------------------------------------

回归正题:gson解析json。要使用gosn首先要下载gson包并导入自己的工程中。

gson中最重要的方法莫过于:toJson(),和fromJson()。即序列化和反序列化。本文中的json文件可从上一篇博客中找到,为了简洁起见这里不贴出来了。代码如下:

package com.demo.gosn;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import com.google.gson.Gson;

public class JsonDecodeUseGson {

	public static void main(String[] args) {
		String filePath = new File("jsonFile").getAbsolutePath()+"\\json.txt";
		String jsonStr = readFromTXT(filePath);
		List<Programmer> list = jsonDecode(jsonStr);
		for(Programmer p : list){
			//tojson方法使用举例
			Gson g = new Gson();
            System.out.println(p.lastName);
			System.out.println(g.toJson(p));
		}
	}
	
	
	public static String readFromTXT(String filePath){
		InputStreamReader isr = null;
		String resault = "";
		try{
			isr = new InputStreamReader(new FileInputStream(filePath), "utf-8");
			BufferedReader bf = new BufferedReader(isr);
			String line = "";
			while((line=bf.readLine())!=null){
				resault += line;
			}
			isr.close();
		}catch(Exception e){
			e.printStackTrace();
		}
		return resault;
	}
	
	/**
	 * 这里演示用gson解析json。
	 */
	/**
	 * 内部类(不必非得是内部类),其中属性名称必须与json串中key的名称一致。
	 * 自定义类的内部结构,我这里图省事只对json串中部分内容(programmers)做了解析。
	 * @author Administrator
	 *
	 */
	class Programmer{
		private String firstName;
		private String lastName;
		private String email;
	}
	class Programmers{
		private List<Programmer> programmers = new ArrayList<JsonDecodeUseGson.Programmer>();
	}
	
	/**
	 * 使用gson解析数组类型的json串
	 * @param jsonStr
	 * @return
	 */
	public static List<Programmer> jsonDecode(String jsonStr){
		Gson gson = new Gson();
		List<Programmer> ps = gson.fromJson(jsonStr, Programmers.class).programmers;
		return ps;
	}

}

对比上篇使用org.json的解析喜欢哪个就用哪个,朋友,你离精通json解析不远了。

转载于:https://my.oschina.net/strzb/blog/849384

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值