json

Json

json简介

JSON 是纯文本,JSON 具有“自我描述性”(人类可读),JSON 具有层级结构(值中存在值),JSON 可通过 JavaScript 进行解析,JSON 数据可使用 AJAX 进行传输。对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用。

JSON 数据的书写格式是:名称/值对。

"name" : "value"

读取 JSON 字符串

JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串(伪对象),或者在异步应用程序中将字符串从 Web 客户端传递给服务器端程序

String json1 = "{name:'小明',age:1,sex:null}";

将字符串转化成为json对象

JSONObject json = new JSONObject(json1);

根据key获取json对象中对应的属性

Object name = json.get("name");

相应方法:

has(key) : 判断JSON中是否存在指定的key
System.out.println(json.has("name"));
//字段是否为空
System.out.println(json.isNull("sex"));
//获取所有的key
Iterator keys = json.keys();
while(keys.hasNext()) {
System.out.println(keys.next());
}
//获取元素的个数
System.out.println(json.length());
若key不存在则返回默认值 null
System.out.println(json.opt("name")); 
System.out.println(json.opt("phone"));
System.out.println(json.optBoolean("phone"));
//根据值指定返回ture和false
System.out.println(json.optBoolean("phone", false));
//添加字段
JSONObject put = json.put("realname", "江小白");
System.out.println(put);	
json.remove("realName");

返回所有的key

返回所有的key
JSONArray names = json.names();
for(int i=0 ;i<names.length();i++) {
Object object = names.get(i);
System.out.println(object);
}

将json对象转换为Map

String json1 = "{name:'小明',age:1,sex:null}";
JSONObject json = new JSONObject(json1);
Map< String, Object> map = new HashMap<String, Object>();
		Iterator keys = json.keys();
		while(keys.hasNext()) {
			String key = keys.next().toString();
			map.put(key, json.get(key));
		}
		System.out.println(map);

将json字符串转化为java实体

        String json1 = "{name:'小明',age:1,sex:null}";
        JSONObject json = new JSONObject(json1);	
         Student stu  = new  Student();
		stu.setName(json.getString("name"));
		stu.setAge(json.getInt("age"));
		stu.setSex(json.getString("sex"));
		System.out.println(stu.toString());

json字符串转数组

String json = "[{'name':'小青','age':18,'sex':'男'},{  'name':'小白','age':18,'sex':'女'   }]";
		JSONArray arr = new JSONArray(json);
		int length = arr.length();
		Student student = new Student("小红", 18, "女");
		List<Student> list = new ArrayList<>();
		list.add(student);
		arr.put(list);
		for(int i =0;i<length;i++) {
			Object object = arr.get(i);
			System.out.println(object);
		}

		arr.put("{'name':ll,'age':18,'sex':'女'}");
		System.out.println(arr);
		System.out.println(arr.get(2));		

json字符串转对象

//Student2实体类省略
String str ="{'code':200,'message':'SUCCESS', "
				+ "'data':[{'name':'小青','age':18,'sex':'男','like':['篮球','足球']},{  'name':'小白','age':18,'sex':'女'  ,'like':['篮球','足球'] }]}";
		JSONObject jsonObject = new JSONObject(str);
		JSONArray jsonArray = jsonObject.getJSONArray("data");
		List<Student2> list = new ArrayList<Student2>();
		for(int i = 0 ;i<jsonArray.length();i++) {
			JSONObject obj = jsonArray.getJSONObject(i);
			Student2 student2 = new Student2();
			student2.setName(obj.getString("name"));
			student2.setAge(obj.getInt("age"));
			student2.setSex(obj.getString("sex"));
			JSONArray like = obj.getJSONArray("like");
			List<String> likes = new ArrayList<String>();
			for(int j=0;j<like.length();j++) {
				likes.add(like.getString(j));
			}
			student2.setLike(likes);
			list.add(student2);

阿里-fastJSON解析

在fastJSON核心方法:

parse(str) : 将json格式的字符串转化为各种类型

toJSONString(Object) : 将各种类型的数据转化为JSON字符串

package com.czq.fastJson;

import java.util.ArrayList;
import java.util.List;

import com.alibaba.fastjson.JSON;
import com.czq.json.Student2;

public class FastJSONDemo {
	//字符串转对象
//	public static void strToBean() {
//		String json1 = "{'name':'江小白','age':18,'sex':'男'}";
//		Student student = JSON.parseObject(json1,Student.class);
//		System.out.println(student);
//	}
	//字符串转集合
//	public static void str2List() {
//		String str = "{'code':200,'message':'SUCCESS','data':[{'name':'张三','age':18,'sex':'男','like':['篮球','足球']},{'name':'李四','age':18,'sex':'男','like':['篮球','足球']}]}";
//		JSONObject parseObject = JSON.parseObject(str);
//		String object = parseObject.getString("data");
//		System.out.println(object);
//		JSON.parseArray(object,Student2.class);
//	}
	
	//对象转字符串
//	public static void str2Bean() {
//		Student2 stu = new Student2("小猫",18,"男",null);
//		String jsonString = JSON.toJSONString(stu);
//		System.out.println(jsonString);
//	}
	
	//集合转字符串
	public static void listToStr() {
		List<Student2> stu = new ArrayList<Student2>();
		List<String> likes = new ArrayList<String>();
		Student2 student1 = new Student2("小红",18,"女",likes);
		Student2 student2 = new Student2("小红",18,"女",likes);
		likes.add("足球");
		likes.add("篮球");
		stu.add(student1);
		stu.add(student2);
		System.out.println(JSON.toJSONString(stu));
		System.out.println(stu);
	}
	
	public static void main(String[] args) {
		//strToBean();
		//str2List();
		//str2Bean();
		listToStr();
	}
}

运行结果

Student [name=江小白, age=18, sex=男]
[{"age":18,"like":["篮球","足球"],"name":"张三","sex":"男"},{"age":18,"like":["篮球","足球"],"name":"李四","sex":"男"}]
{"age":18,"name":"小猫","sex":"男"}
[{"age":18,"like":["足球","篮球"],"name":"小红","sex":"女"},{"age":18,"like":["足球","篮球"],"name":"小红","sex":"女"}]
[Student [name=小红, age=18, sex=女], Student [name=小红, age=18, sex=女]]

Google-GSON解析

package com.czq.GJson;

import java.util.ArrayList;
import java.util.List;

import com.czq.json.Student;
import com.czq.json.Student2;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

public class GsonDemo {
	public static void str2Bean() {
		String str = "{'name':'xxx','age':18,'sex':'男'}";
		Gson json = new Gson();
		Student student = json.fromJson(str, Student.class);
		System.out.println(student);
	}
	
	public static void str2List() {
		String str = "['qq','ww','ee']";
		Gson json = new Gson();
		List fromJson = json.fromJson(str, List.class);
		System.out.println(fromJson);
	}
	
	public static void strToList2() {
		String str = "[{'name':'张三','age':18,'sex':'男','like':['篮球','足球']},{'name':'李四','age':18,'sex':'男','like':['篮球','足球']}]";
		Gson gson = new Gson();
		List fromJson = gson.fromJson(str, List.class);
		Object students = gson.fromJson(str, new TypeToken<List<Student2>>() {}.getType());
		System.out.println(fromJson.size());
		System.out.println(fromJson);
		System.out.println(fromJson.get(0));
		System.out.println(students);
		
	}
	
	public static void bean2Str() {
		Student stu = new Student("ww",12,"nv");
		Gson gson = new Gson();
		System.out.println(gson.toJson(stu));
	}
	
    
    	public static void listToStr() {
		List<Student2> students = new ArrayList<Student2>();
		List<String> likes = new ArrayList<String>();
		likes.add("书法");
		likes.add("画画");
		Student2 st1 = new Student2("韩梅梅", 18, "女", likes);
		Student2 st2 = new Student2("Lucy", 18, "女", likes);
		students.add(st1);
		students.add(st2);
		Gson gson = new Gson();
		String stu = gson.toJson(students);
		System.out.println(stu);
	}
    
    
	public static void main(String[] args) {
		str2Bean();
		str2List();
		strToList2();
		bean2Str();
		listToStr();
	}
}

运行结果

Student [name=xxx, age=18, sex=男]
[qq, ww, ee]
2
[{name=张三, age=18.0, sex=男, like=[篮球, 足球]}, {name=李四, age=18.0, sex=男, like=[篮球, 足球]}]
{name=张三, age=18.0, sex=男, like=[篮球, 足球]}
[Student [name=张三, age=18, sex=男], Student [name=李四, age=18, sex=男]]
{"name":"ww","age":12,"sex":"nv"}
[{"name":"韩梅梅","age":18,"sex":"女","like":["书法","画画"]},{"name":"Lucy","age":18,"sex":"女","like":["书法","画画"]}]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值