JSON 是一种轻量级易与解析的数据格式,jquery 1.4 以后对 json 格式变严格

格式:{"键":"值 ","键":"值 "},boolean 类型,则不用加 引号

 具体形式 :

  1. Json 以 key-value 的形式存储数据 
  2. Key 的取值 为 String 类型; 
  3. Value 的取值 为 String,boolean,Number,数组,Object,null
  4. Json 串以{开始,以}结尾
  5. Json 串中数组是以[开始,以]结尾; 
  6. Json 串中 Object 是以{开始,以}结尾; 

解析方式:

单元测试类:

new —> other --->

JAVA中的JSON_Java

package com.zyd.po;

public class User {
	private Integer useId;
	private String name;
	private Integer age;
	private boolean sex;
	
	public User() {
		super();
	}
	
	public User(Integer useId, String name, Integer age, boolean sex) {
		super();
		this.useId = useId;
		 = name;
		this.age = age;
		this.sex = sex;
	}

	public Integer getUseId() {
		return useId;
	}
	public void setUseId(Integer useId) {
		this.useId = useId;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		 = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public boolean isSex() {
		return sex;
	}
	public void setSex(boolean sex) {
		this.sex = sex;
	}
	
}

1. 使用 gson 处理 

package com.zyd.test;

import static org.junit.Assert.*;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.junit.Test;

import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.JsonPrimitive;
import com.google.gson.reflect.TypeToken;
import com.sun.java_cup.internal.runtime.virtual_parse_stack;
import com.zyd.po.User;

public class GsonTest {
	/*
	 * @Test注解  单元测试
	 * 1.不能有父类
	 * 2.不能有静态方法
	 * 3.不能有参数
	 * 4.返回值是void
	 */
	@Test
	public void test() {
		fail("Not yet implemented");
	}
	/*
	 * 将对象转换成JSON字符串
	 */
	@Test
	public void testObjectToJson(){
//		得到对象
		User user = new User(1,"aa",18,true);
//		得到gson对象
		Gson gson = new Gson();
//		将对象转换成JSON字符串
		String json = gson.toJson(user);
		System.out.println(json);
	}
	
	 /*
	  * 将JSON字符串转换成对象
	  */
	@Test
	public void testJSONToObject(){
//		定义JSON字符串
		String json = "{\"userId\":1,\"name\":\"zhangsan\",\"age\":18,\"sex\":true}";
		
		//得到gson对象
		Gson gson = new Gson();
//		将JSON字符串转换成对象
		User user = gson.fromJson(json, User.class);
		System.out.println(user.getName());
	}
//	将集合转换成json字符串
	@Test
	public void testListToJson(){
		
		List<String> list = new ArrayList<String>();
		list.add("aa");
		list.add("bb");
		list.add("cc");
		//得到json对象
		Gson gson = new Gson();
//		将集合转换成JSON字符串
		String json = gson.toJson(list);
		System.out.println(json);
		
		List<User> userList = new ArrayList<User>();
		User user = new User(1, "zhangsan", 18, true);
		User user2 = new User(2, "lisi", 19, false);
		User user3 = new User(3, "wangwu", 20, true);
		userList.add(user);
		userList.add(user2);
		userList.add(user3);
//		将集合转换成JSON字符串
		String json2 = gson.toJson(userList);
		System.out.println(json2);
	}
	/*
	 * 将JSON字符串转换成集合
	 */
	@Test
	public void testJsonTOList(){
//		定义json对象
		String json ="[\"zhangsan\",\"lisi\",\"wangwu\"]";
//		得到gson对象
		Gson gson = new Gson();
//		得到JSON字符串转换成集合
		List<String> list = gson.fromJson(json, new TypeToken<List<String>>(){}.getType());
	}
	@Test
	public void testMapToJSON(){
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("name", "aa");
		map.put("age", 18);
		map.put("sex", true);
//		得到gson对象
		Gson gson = new Gson();
		String json = gson.toJson(map);
		System.out.println(json);
	}
	/*
	 * 将JSON字符串转换成map
	 */
	@Test
	public void testJSONToMap(){
		String json = "{\"uname\":\"张三\",\"sex\":true,\"age\":18}";
//		得到gson对象
		Gson gson = new Gson();
		Map<String, Object>map = gson.fromJson(json, new TypeToken<Map<String, Object>>(){}.getType());
		System.out.println(map.get("uname"));
	}
	/*
	 * JSON节点解析
	 */
	@Test
	public void parse(){
		String json = "{\"flag\": true,\"data\": {\"userId\":1,\"name\": \"张三\",\"age\": 18,\"sex\":true }}";
//		得到解析器
		JsonParser parser = new JsonParser();
//		得到根节点
		JsonElement element = parser.parse(json);
//		得到JSON字符串判断当前json数据类型
		JsonObject root = element.getAsJsonObject();
//		解析flag 根据文档判断是boolean类型 基本数据类型
		JsonPrimitive primitive = root.getAsJsonPrimitive("flag");
//		将基本数据类型转换成具体的数据类型
		boolean flag = primitive.getAsBoolean();
		System.out.println(flag);
//		解析data  根据文档判定是对象类型JSONObject
		JsonObject data = root.getAsJsonObject("data");
//		将对象转换成具体的对象
		User user = new Gson().fromJson(data, User.class);
		System.out.println(user.getName());
	}
}
package com.zyd.web;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.alibaba.fastjson.JSON;
import com.zyd.po.User;

/**
 * Servlet implementation class ServletTest
 */
@WebServlet("/test")
public class ServletTest extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
	 */	
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		List<User> userList = new ArrayList<>();
		User use1 = new User(1,"aa",18,true);
		User use2 = new User(2,"bb",19,false);
		User use3 = new User(3,"cc",20,true);
		userList.add(use1);
		userList.add(use2);
		userList.add(use3);
		String json = JSON.toJSONString(userList);		//把json对象转换成字符串
		response.getWriter().write(json);
	}
}

 

使用fastjson处理:

package com.zyd.test;

import static org.junit.Assert.*;

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

import org.junit.Test;

import com.alibaba.fastjson.JSON;
import com.zyd.po.User;

public class FastJsonTest {

	@Test
	public void test() {
		fail("Not yet implemented");
	}
	@Test
	public void testToJson(){
//		得到对象
		User user = new User(1,"aa",18,true);
//		将javaBean转换成JSON字符串
		String json1 = JSON.toJSONString(user);
		System.out.println(json1);
		
		//定义集合
		List<String> list = new ArrayList<>();
		list.add("aa");
		list.add("bb");
		list.add("cc");
		String json2 = JSON.toJSONString(list);
		System.out.println(json2);
		//存对象
		List<User> userList = new ArrayList<User>();
		User u1 = new User(1,"aa",11,true);
		User u2 = new User(2,"bb",13,true);
		User u3 = new User(3,"cc",15,true);
		userList.add(u1);
		userList.add(u2);
		userList.add(u3);
	String json3 = JSON.toJSONString(userList);
	System.out.println(json3);
	}
	@Test
	public void testToObject(){
		//定义JSON字符串
		String json1 ="{\"userId\":1,\"name\":\"zhangsan\",\"age\":18,\"sex\":true}";
		User u1 = JSON.parseObject(json1,User.class);
		System.out.println(u1.getName());
	
//		定义json对象
		String json2 = "[\"zhangsan\",\"lisi\",\"wangwu\"]";
		List<String> list = JSON.parseArray(json2,String.class);
		System.out.println(list.get(2));
	
		String json3 = "[{\"age\":18,\"sex\":true,\"name\":\"zhangsan\",\"userId\":1},{\"age\":19,\"sex\":false,\"name\":\"lisi\",\"userId\":2},{\"age\":20,\"sex\":true,\"name\":\"wangwu\",\"userId\":3}]";
		List<User> userList = JSON.parseArray(json3,User.class);
		System.out.println(userList.get(1).getName());
	}
}