JSON全解析

json和xml都是跨平台的解析语言,但是json相对于xml虽然可读性要差点但是其解析方式相对简单,有效数据多的特点广泛运用于安卓网络响应格式,而且安卓内部集成了json不需要再导入jar包,
1.json格式
1.1{“fistname”{“fistname”:"Brett",“Lastname”:"li"} 这是一个jsonObject,即整个{},其中包含的数据是以 键:值的方式存储的,目的是方便根据键获取值,jsonObject是json解析的单位


1.2{"people":[{“fistname”:"Brett",“Lastname”:"li"},{“fistname”:"Kanra",“Lastname”:"niu"}]}
外层是jsonObject其键是people,值是一个jsonArray,而jasonArray里面的数据就是jsonObject,解析jsonArry就是获取内部的jsonObject


2.java转化为json
2.1 java对象转化为jsonObject

JSONObject jo = jsonObject.from(对象);


2.2 list转化为jsonArray
jsonArray ja = jsonArray.from)(list);
jsonObject j = new jsonObject();
j.put("student",ja);
public class JSONTEST {
	public static void main(String[] args) {
		Student s = new Student("1", "zhang", 99, "北京", 12, "beijing");
		//java对象转换为json对象
		
		JSONObject j = JSONObject.fromObject(s);
		System.out.println(j.toString());
		System.out.println("------------------------------");
		
		List<Student> list = new ArrayList<>();
		list.add(new Student("2", "wang", 99, "北京", 12, "beijing"));
		list.add(new Student("3", "zou", 99, "北京", 12, "11"));
		list.add(new Student("4", "ma", 99, "wef", 12, "beijing"));
		list.add(new Student("5", "xiao", 99, "北京", 12, "666"));
		list.add(new Student("6", "li", 99, "taiwan", 12, "beijing"));
		list.add(new Student("7", "jia", 99, "china", 12, "7777"));
		
		JSONArray arry = JSONArray.fromObject(list);
		System.out.println(arry.toString());
		System.out.println("------------------------------");
		
		JSONObject j2 = new JSONObject();
		j2.put("student", arry);
		System.out.println(j2.toString());
		
	}
}

输出为

{"address":"北京","age":12,"id":"1","name":"zhang","provice":"beijing","score":99}
------------------------------
[{"address":"北京","age":12,"id":"2","name":"wang","provice":"beijing","score":99},{"address":"北京","age":12,"id":"3","name":"zou","provice":"11","score":99},{"address":"wef","age":12,"id":"4","name":"ma","provice":"beijing","score":99},{"address":"北京","age":12,"id":"5","name":"xiao","provice":"666","score":99},{"address":"taiwan","age":12,"id":"6","name":"li","provice":"beijing","score":99},{"address":"china","age":12,"id":"7","name":"jia","provice":"7777","score":99}]
------------------------------
{"student":[{"address":"北京","age":12,"id":"2","name":"wang","provice":"beijing","score":99},{"address":"北京","age":12,"id":"3","name":"zou","provice":"11","score":99},{"address":"wef","age":12,"id":"4","name":"ma","provice":"beijing","score":99},{"address":"北京","age":12,"id":"5","name":"xiao","provice":"666","score":99},{"address":"taiwan","age":12,"id":"6","name":"li","provice":"beijing","score":99},{"address":"china","age":12,"id":"7","name":"jia","provice":"7777","score":99}]}


3.jsonObject转换为java对象
3.1 获取解析的json字符串s,处理("要转义) ""内放json的字符串,然后将"改为\"
3.2 获得jsonObject
JSONObject j = JSONObject.fromObject(s);
Student student = new Student();

s.setName(j.getString("name"));


public class JsonTest2 {
	public static void main(String[] args) {
		String s ="{\"address\":\"北京\",\"age\":12,\"id\":\"1\",\"name\":\"zhang\",\"provice\":\"beijing\",\"score\":99}";
		
		Student student= new Student();
		
		JSONObject j=JSONObject.fromObject(s);
		
		student.setAddress(j.getString("address"));
		student.setAge((j.getInt("age")));
		student.setId(j.getString("id"));
		student.setScore(j.getInt("score"));
		student.setName(j.getString("name"));
		student.setProvice(j.getString("provice"));
		
		System.out.println(student.toString());
		
	}

}


4.jsonArray转化为list
4.1 获取解析的json字符串s,处理("要转义) ""内放json的字符串,然后将"改为\"
4.2 获得jsonObject
JSONObject j = JSONObject.fromObject(s);
4.3 获取jsonArray
jsonArray ja = j.getJSONArray("Student");
4.4 遍历和封装list
List<Student> list = new arraList<>();
for(int i = 0;i<ja.size();i++){
4.5获取jsonObject
JSONObject jo = ja.getJSONO
Student s = new Student();
s.setName(jo.getString("name"));
list.add(s);
}

public class JsonTest3 {
	public static void main(String[] args) {
		String js = "{\"student\":[{\"address\":\"北京\",\"age\":12,\"id\":\"2\",\"name\":\"wang\",\"provice\":\"beijing\",\"score\":99},{\"address\":\"北京\",\"age\":12,\"id\":\"3\",\"name\":\"zou\",\"provice\":\"11\",\"score\":99},{\"address\":\"wef\",\"age\":12,\"id\":\"4\",\"name\":\"ma\",\"provice\":\"beijing\",\"score\":99},{\"address\":\"北京\",\"age\":12,\"id\":\"5\",\"name\":\"xiao\",\"provice\":\"666\",\"score\":99},{\"address\":\"taiwan\",\"age\":12,\"id\":\"6\",\"name\":\"li\",\"provice\":\"beijing\",\"score\":99},{\"address\":\"china\",\"age\":12,\"id\":\"7\",\"name\":\"jia\",\"provice\":\"7777\",\"score\":99}]}";
		
		JSONObject jo = JSONObject.fromObject(js);
		//!
		JSONArray ja = jo.getJSONArray("student");
		
		List<Student> list = new ArrayList<>();
		
		for (int i = 0; i < ja.size(); i++) {
			
			//!
			JSONObject j = ja.getJSONObject(i);
			
			Student student= new Student();
			
			
			student.setAddress(j.getString("address"));
			student.setAge((j.getInt("age")));
			student.setId(j.getString("id"));
			student.setScore(j.getInt("score"));
			student.setName(j.getString("name"));
			student.setProvice(j.getString("provice"));
			
			list.add(student);
			
		}
		
		System.out.println(list.toString());
		
	}
}

public class Student {

	private String id;
	private String name;
	private int score;
	private String address;
	private int age;
	private String provice;
	

	public Student(String id, String name, int score, String address, int age, String provice) {
		super();
		this.id = id;
		this.name = name;
		this.score = score;
		this.address = address;
		this.age = age;
		this.provice = provice;
	}

	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + ", score=" + score + ", address=" + address + ", age=" + age
				+ ", provice=" + provice + "]";
	}

	public Student() {
		super();
		// TODO Auto-generated constructor stub
	}

	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 int getScore() {
		return score;
	}

	public void setScore(int score) {
		this.score = score;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getProvice() {
		return provice;
	}

	public void setProvice(String provice) {
		this.provice = provice;
	}
	
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值