什么是Json,Json如何使用

  JavaScript Object Notation:javascript的对象表示法。javascript


  这是一种能传递对象的语法,能够是键值对,数组,以及其余对象。  
  轻量级的数据传输方法。html

  json格式:java

  { key :{ key : [ { key :value ,key :value } ] } },灵活组合。json

  { } : 表示一个集合,容器
  [ ] :里面装数组,集合
  键值对之间用冒号隔开,数组的元素用逗号隔开。后端

  

  他不是面向对象的,可是较于javascript他更具备分析性,复用性。先后端均可使用。
  json的值能够是:int float string boolean 数组 对象。
  数组

  json方法:
  JSON.parse():该方法用于解析JSON类型的字符串而且返回对应的值。
  JSON.stringify():该方法一样返回与指定值对应的JSON字符串。安全

  

  JavaScript能够用eval()方法将json文本转换为javascript对象。
  var obj = eval ( " (" + json + " ) " );测试

  注意:javascript的eval()方法可编译执行任何javascript代码可是这并不安全,若是使用json解析器将json转换为javascript就会更安全spa

  json格式的转换,对象,集合:(官方的json包和阿里巴巴的json包)
  code

  官方:不能一次拿到对象的全部属性,一次只能取单一的值:
    eg: user对象:有name id
      转换 JSONObject userJson = new JSONObject(user);
      获取 String userName = userJson.getString("name");
        int userId = userJson.getInt("age");
      user集合list
      转换:JSONArray userJsonArray = new JSONArray(list);
      获取:JSONObiect userObj = userJsonArray.getJSONObject(0);
  阿里巴巴:fastJson包
    eg:user对象:能够直接得到该对象
      转换:String  userFast =  JSON.toJSONString(user);----json字符串

      获取:User u1 = JSONObject.parseObject(fastUser,User.class);
      User集合 : 能够直接得到该对象集合
      转换: String fastList = new JSONArray(list);
      获取: list<User> fastList = JSONArray.parseArray(fastList,User.class)
  

  注意:测试的时候注意方法名,两者方法名同样,须要全名引用。

  

 1 import com.alibaba.fastjson.JSON;  2 import org.json.JSONArray;  3 import org.json.JSONException;  4 import org.json.JSONObject;  5 
 6 import java.util.ArrayList;  7 import java.util.List;  8 
 9 public class TestJson { 10     public static void main(String[] args) throws JSONException { 11 
12         List<User> list = new ArrayList<>(); 13 
14         User user1 = new User(12,"张三"); 15         User user2 = new User(13,"李四"); 16  list.add(user1); 17  list.add(user2); 18 
19         System.out.println("---------------------------"); 20         System.out.println("            官方jar包测试"); 21         //org.json 转换对象测试
22         JSONObject userObj = new JSONObject(user1); 23         //getString须要异常抛出防止key值不存在
24         System.out.println("拿到该对象的id值: "+userObj.getString("id")); 25         //org.json 转换集合测试
26         JSONArray userList = new JSONArray(list); 27         //get方法拿到集合下标,须要抛出下标不存在的异常
28         System.out.println("拿到该集合下标为0的值: "+userList.get(0)); 29         User user3 = (User) userList.get(0); 30         System.out.println("输出对象:"+user3.toString()); 31         String userStr = new JSONObject(user1).toString(); 32         System.out.println("直接打印对象:"+user1.toString()); 33         System.out.println("对象转换json字符串:"+userStr); 34         System.out.println("直接打印集合: "+list); 35         //对象转json字符串
36         String userlistStr = new JSONArray(list).toString(); 37         System.out.println("集合转换json字符串: " + userlistStr); 38         System.out.println("---------------------------"); 39 
40         //阿里巴巴的fastJson包测试
41         System.out.println("---------------------------"); 42         System.out.println("            阿里巴巴fastJson包测试"); 43         //com.alibaba.fastjson包测试 因为方法重名,使用全名 44         //直接转换json字符串
45         String userFast = JSON.toJSONString(user1); 46         System.out.println("fastjson转换对象为json字符串: "+userFast); 47         String userlistFast = JSON.toJSONString(list); 48         System.out.println("fastjson直接转换集合为json字符串: "+userlistFast); 49 
50         //json字符串转换为json对象
51         com.alibaba.fastjson.JSONObject userFast2 = JSON.parseObject(userFast); 52         System.out.println("fastjson将json字符串转换的json对象:"+userFast2); 53         //json字符串转换为json集合
54         com.alibaba.fastjson.JSONArray userlistFast2 = JSON.parseArray(userlistFast); 55         System.out.println("fastjson将json字符串转换的json集合:"+userlistFast2); 56  } 57 }
--------------------------- 官方jar包测试 拿到该对象的id值: 12 拿到该集合下标为0的值: User{id=12, name='张三'} 输出对象:User{id=12, name='张三'} 直接打印对象:User{id=12, name='张三'} 对象转换json字符串:{"name":"张三","id":12} 直接打印集合: [User{id=12, name='张三'}, User{id=13, name='李四'}] 集合转换json字符串: ["User{id=12, name='张三'}","User{id=13, name='李四'}"] ---------------------------
--------------------------- 阿里巴巴fastJson包测试 fastjson转换对象为json字符串: {"id":12,"name":"张三"} fastjson直接转换集合为json字符串: [{"id":12,"name":"张三"},{"id":13,"name":"李四"}] fastjson将json字符串转换的json对象:{"name":"张三","id":12} fastjson将json字符串转换的json集合:[{"name":"张三","id":12},{"name":"李四","id":13}]

 

原文出处:https://www.cnblogs.com/Ruoqian/p/rq207_02.html