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