<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      JSON轉化工具的使用

      概述

           JSON是一種輕量化的數據傳輸格式,在各種場景都有運用。比如在ajax中,服務端的數據一般通過JSON字符串的格式傳輸給前端,前端ajax引擎自動將JSON字符串轉化為JS對象(需要將ajax的返回內容格式設置為"json")。那么此時我們在后臺服務器中就需要將封裝好的JavaBean對象轉化為JSON格式字符串來傳輸給前臺ajax引擎,此時使用JSON轉化工具將大大簡化我們代碼量。

      首先我們需要明確的是什么是JSON格式

           JSON格式有兩種,一種是對象格式,另一種是數組格式(也可以叫集合)。    

      • 對象格式:{"key1":value1,"key2":value2......}
      • 數組形式:[{對象1},{對象2}....]

         需要注意的是

      1. 這里的value可以是字符串形式,也可以是數值形式,還可以是布爾型(除了字符串形式需要打引號,其他兩種都不用打)
      2. JSON嚴格的規定中,key是必須打雙引號的,不能為單引號,所以在java代碼手動連接JSON字符串時需要用轉義字符。
      3. 雖然在跟多環境中兼容key不打引號的JSON格式,但為了在所有環境下兼容我們還是都加上雙引號吧。                     

      JSON轉換工具的使用

       

          一. GSON轉換工具的使用

      1. 在使用之前我們需要引入所需的jar包(gson-2.2.4.jar)。
      2. 創建Gson對象。
      3. 調用該對象的toJson()方法。
      protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      		CategoryService service=new CategoryService();
      		List<Category> list=service.getCategoryList();
      		//創建Gson對象
      		Gson gson=new Gson();
      		//調用toJson()方法
      		String json = gson.toJson(list);
      		response.setContentType("text/html;charset=UTF-8");
      		response.getWriter().write(json);
      	}

      二.JSONLib轉換工具的使用

      使用前需要導的包:

      1.獲取JSON字符串中的屬性值(字符串->java對象)

      public class Hello {
      	@Test
      	public void test() {
      		String jsonStr="{\"id\":\"123\",\"name\":\"tom\"}";
      		JSONObject json = JSONObject.fromObject(jsonStr);
      		int id = json.getInt("id");
      		String name=json.getString("name");
      	}
      }

       

      2.將Java對象轉換成JSON字符串(java對象->字符串)

      在演示之前我們給出一個JavaBean對象(省略get和set方法):

      public class User {
      	private Long uid;
      	private String email;
      	private Long initSize;
      	
          //get和set方法省略
      }

           2.1 將List集合轉換成JSON字符串數組形式(使用JSONArray對象)

      public class Hello {
      	@Test
      	public void test() {
      		List<User> list=new ArrayList<>();
      		User u1 = new User();
      		u1.setUid(1L);
      		u1.setEmail("1@qq.com");
      		list.add(u1);
      		
      		User u2=new User();
      		u2.setUid(2L);
      		u2.setEmail("2@qq.com");
      		list.add(u2);
      		
                   //將List轉換成Json字符串
      		JSONArray json = JSONArray.fromObject(list);
      		String jsonStr=json.toString();
      
      		System.out.println(jsonStr);
      	}
      }

      輸出結果:

       

           2.2將JavaBean對象轉換成JSON字符串對象形式(使用JSONObject方法)

      public class Hello {
      	@Test
      	public void test() {
      		User u = new User();
      		u.setUid(1L);
      		u.setEmail("1@qq.com");
      		
      		JSONArray json = JSONArray.fromObject(u);
      		String jsonStr=json.toString();
      		
      		System.out.println(jsonStr);
      	}
      }

      輸出結果:

       

         2.3.將現有對象轉換成JSON字符串時,添加排除屬性

      在某些情況下,我們轉換對象中不是所有屬性都需要轉換成JSON字符串中,此時我們只需要添加排除即可。例如在2.1和2.2中User對象中的initSize屬性,我們不需要轉換成字符串,我們只需要這么做。
       

      public class Hello {
      	@Test
      	public void test() {
      		User u = new User();
      		u.setUid(1L);
      		u.setEmail("1@qq.com");
      		
      		//添加排除
      		JsonConfig config=new JsonConfig();
      		config.setExcludes(new String[] {"initSize"});
      		
      		JSONObject json = JSONObject.fromObject(u,config);
      		String jsonStr=json.toString();
      		
      		System.out.println(jsonStr);
      	}
      }

      輸出結果:

      注:這里添加的排除,不是只對當前層級的Java對象有用,對當前層級中引用的其他對象中的屬性同樣有用。在有的Java對象中我們可能會封裝引用類型的屬性,也有可能多個對象的互相引用。在轉換時會由于形成了死循環而報錯。此時必須添加排除,破壞原先的循環嵌套才能成功轉換。

      Java對象的嵌套循環導致轉換失敗的問題,詳見博主另一篇文章:

      在SSH框架中,多個持久層對象相互引用,從而引發分頁查詢中,查詢所得的持久化對象轉換為JSON字符串報錯的原因及解決方案

       

      FastJSON使用

      在演示FastJSON的操作之前,我們先給出后面需要用到兩個實體類(其中getter和setter方法省略):

      public class User {
      	private String name;
      	private int age;
      
      	@Override
      	public String toString() {
      		return "User [name=" + name + ", age=" + age + "]";
      	}
      }
      
      public class UserGroup {
      	private String name;
      	private List<User> users = new ArrayList<User>();
      
      	@Override
      	public String toString() {
      		return "UserGroup [name=" + name + ", users=" + users + "]";
      	}
      }

      一. 對象序列化

      所謂序列化就是將對象轉換成字符串

      // 序列化
      	@Test
      	public void testObjectToJson() throws Exception {
      		User user1 = new User();
      		user1.setName("張三");
      		user1.setAge(12);
      
      		// {"age":12,"name":"張三"}
      		String json = JSON.toJSONString(user1);
      		System.out.println(json);
      	}
      
      	@Test
      	public void testObjectToArray() throws Exception {
      		User user1 = new User();
      		user1.setName("張三");
      		user1.setAge(12);
      
      		User user2 = new User();
      		user2.setName("李四");
      		user2.setAge(12);
      
      		List<User> list = new ArrayList<User>();
      		list.add(user1);
      		list.add(user2);
      
      		UserGroup group = new UserGroup();
      		group.setUsers(list);
      		group.setName("root");
      
      		// 將List轉成JSON
      		// [{"age":12,"name":"張三"},{"age":12,"name":"李四"}]
      		String json = JSON.toJSONString(list);
      		System.out.println(json);
      
      		// 將UserGroup轉換成Json
      		// {"name":"root","users":[{"age":12,"name":"張三"},{"age":12,"name":"李四"}]}
      		String json2 = JSON.toJSONString(group);
      		System.out.println(json2);
      	}

      二. 定制序列化

      // 定制序列化
      //如果age屬性<18,則在序列化時不顯示該屬性
      	@Test
      	public void testPrtopertyJson() throws Exception {
      
      		PropertyFilter filter = new PropertyFilter() {
      			@Override
      			public boolean apply(Object object, String name, Object value) {
      				// 如果age屬性<18,則在序列化時不顯示該屬性
      				if (name.equals("age")) {
      					if ((Integer) value < 18) {
      						return false;
      					}
      				}
      				return true;
      			}
      		};
      		User user1 = new User();
      		user1.setName("張三");
      		user1.setAge(18);
      		String jsonString = JSON.toJSONString(user1, filter);
      		System.out.println(jsonString);
      	}

      三. 反序列化

      // 反序列化為對象
      	@Test
      	public void testJsonToObj() throws Exception {
      		String json = "{\"age\":12,\"name\":\"張三\"}";
      		// JSON會盡最大可能轉換成User對象
      		User user = JSON.parseObject(json, User.class);
      		System.out.println(user);
      	}
      
      	// 反序列化為集合
      	@Test
      	public void testJsonToList() {
      		String json = "[{\"age\":12,\"name\":\"張三\"},{\"age\":12,\"name\":\"李四\"}]";
      		List<User> list = JSON.parseArray(json, User.class);
      		System.out.println(list);
      	}
      
      	// 反序列化為對象,對象里面包含List集合
      	@Test
      	public void testJsonToObj2() throws Exception {
      		String json = "{\"name\":\"root\",\"users\":[{\"age\":12,\"name\":\"張三\"},{\"age\":12,\"name\":\"李四\"}]}";
      		UserGroup group = JSON.parseObject(json, UserGroup.class);
      		System.out.println(group);
      
      	}

       

      posted @ 2018-06-04 21:33  聽到微笑  閱讀(16)  評論(0)    收藏  舉報  來源
      主站蜘蛛池模板: 亚洲经典av一区二区| 亚洲成人av免费一区| 久久综合伊人| 国产精品丝袜亚洲熟女| 亚洲午夜香蕉久久精品| 亚洲精品成人区在线观看| 樱花草在线社区WWW韩国| 国99久9在线 | 免费| 69精品无人区国产一区| 欧美xxxxx在线观看| 怡春院久久国语视频免费| 黑人欧美一级在线视频| 性动态图无遮挡试看30秒| 亚洲无av中文字幕在线| 女人高潮流白浆视频| 激情六月丁香婷婷四房播| 国产91精品丝袜美腿在线| 色综合天天综合网中文伊| 国产小受被做到哭咬床单GV| 天天爽夜夜爱| 色一伊人区二区亚洲最大| 看全色黄大色黄大片 视频| 亚洲欧洲日产国码久在线| 中文无码人妻有码人妻中文字幕| 欧美黑人巨大videos精品| 无码免费大香伊蕉在人线国产| 久久精品国产99国产精品严洲 | 国产亚洲精品日韩香蕉网| 曝光无码有码视频专区| 免费无码又爽又刺激高潮虎虎视频 | 99久久精品久久久久久婷婷| 国内精品无码一区二区三区| 亚洲男人的天堂久久香蕉| 亚洲乱熟女一区二区三区| 中文字幕av无码一区二区三区| 国产精品扒开腿做爽爽爽a片唱戏 九九热在线免费观看视频 | 国产精品一区二区三区黄| 国产精品美女一区二三区| 伊人色综合久久天天| 余姚市| 无码国模国产在线观看免费|