JSON 是一种轻量级易与解析的数据格式,jquery 1.4 以后对 json 格式变严格
格式:{"键":"值 ","键":"值 "},boolean 类型,则不用加 引号
 具体形式 :
- Json 以 key-value 的形式存储数据
- Key 的取值 为 String 类型;
- Value 的取值 为 String,boolean,Number,数组,Object,null
- Json 串以{开始,以}结尾
- Json 串中数组是以[开始,以]结尾;
- Json 串中 Object 是以{开始,以}结尾; 
解析方式:
单元测试类:
new —> other --->

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;
    this.name = 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) {
    this.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());
  }
}









