欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
gson使用

gson:谷歌提供的JSON的解決方案。它的站點(diǎn)是http://code.google.com/p/google-gson/。
本人用過(guò)org.json和的JSON - lib中提供的解決方案。
先說(shuō)下org.json,它屬于輕量級的JSON的。它能夠將Object或者ArrayList的轉換為JSONObject的和JsonArrayList。但是在反轉換的JSON字符串時(shí)卻只能夠提供字符串的結果。所以比較適合

開(kāi)發(fā)者后期處理。
至于的JSON - lib的在反轉方面做得比前者強了許多。它通過(guò)JSONObject.fromObject和JSONObject.toBean可以將Bean、ArrayList、HashMap中與JSONObject的互相轉換。但是遇到嵌套問(wèn)題

如一個(gè)Bean1->HashMap-> Bean2。當它對該對象反轉換時(shí)將出現Bean2為JSONObject的對象的情況.

現在講到gson了.它通過(guò)reflection來(lái)識別對象.見(jiàn)下面例子:

<Bean>

 ------------------------ 華麗的分割線(xiàn)-----------------------------
 package org.gson.bean;
import java.util.Date;

import com.google.gson.annotations.Expose;
/**
 * 普通的UserBean
 */
public class UserBean {
 @Expose
 private String id;
 @Expose
 private String name;
 
 private Date birthday;

 public String getId() {
  return id;
 }

 public void setId(String id) {
  this.id = id;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public Date getBirthday() {
  return birthday;
 }

 public void setBirthday(Date birthday) {
  this.birthday = birthday;
 }

 @Override
 public String toString() {
  return "UserBean [birthday=" + birthday + ", id=" + id + ", name="
    + name + "]";
 }

}

------------------------ 華麗的分割線(xiàn)------------------------------

package org.gson.bean;

import java.util.List;
import java.util.Map;

/**

  * 包含Arrylist和HashMap,里面保持UserBean

  */

public class GroupBean {
 private String id;
 private Map<String, UserBean> userMap;
 private List<UserBean> userList;

 public String getId() {
  return id;
 }

 public void setId(String id) {
  this.id = id;
 }

 public Map<String, UserBean> getUserMap() {
  return userMap;
 }

 public void setUserMap(Map<String, UserBean> userMap) {
  this.userMap = userMap;
 }

 public List<UserBean> getUserList() {
  return userList;
 }

 public void setUserList(List<UserBean> userList) {
  this.userList = userList;
 }

 @Override
 public String toString() {
  return "GroupBean [id=" + id + ", userList=" + userList + ", userMap="
    + userMap + "]";
 }

}

------------------------ 華麗的分割線(xiàn)------------------------------

<Gson Test>

------------------------ 華麗的分割線(xiàn)------------------------------

package org.gson.main;
import org.gson.bean.UserBean;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder; 
/**

  * 通過(guò)註釋過(guò)濾轉換對象

  */
public class FilterAnnotationTest {
 public static void main(String[] args) {
  UserBean user = new UserBean();
  user.setId("1001");
  user.setName("張三");
  
  /**
   *  設置注釋過(guò)濾功能
   *  Gson gson = new GsonBuilder()
   *  .registerTypeAdapter(Id.class, new IdTypeAdapter())
   *  .serializeNulls()
   *  .setDateFormat(DateFormat.LONG)
    *  .setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)
   *  .setPrettyPrinting()
   *  .setVersion(1.0)
   *  .create();
   */
  GsonBuilder builder = new GsonBuilder();
  // 不轉換沒(méi)有 @Expose 注解的字段
  builder.excludeFieldsWithoutExposeAnnotation();
  Gson gson = builder.create();

  // 將JavaBean字符串轉換為 JSON
  String sUser = gson.toJson(user);
  System.out.println(sUser);
  // {"id":1001,"name":"張三"}

  // 將JSON字符串轉換為 JavaBean
  UserBean user2 = gson.fromJson(sUser, UserBean.class);
  System.out.println(user2.getId() + ", " + user2.getName());
  // 1001, 張三
 }

}


------------------------ 華麗的分割線(xiàn)------------------------------

package org.gson.main;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;

import org.gson.bean.UserBean;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

/**
 * 模板反射對象Bean
 * @author yansheng
 */
public class TemplateTest {
 public static void main(String... strings) {
  List<UserBean> testBeanList = new ArrayList<UserBean>();
  UserBean testBean = new UserBean();
  testBean.setId("1");
  testBean.setName("name");
  testBeanList.add(testBean);
  
  Gson gson = new Gson();
  Type type = new TypeToken<List<UserBean>>(){}.getType();
  
  String beanListToJson = gson.toJson(testBeanList, type);
  System.out.println(beanListToJson);
  // prints [{"id":"id","name":"name"}]

  List<UserBean> testBeanListFromJson = gson.fromJson(beanListToJson, type);
  System.out.println(testBeanListFromJson);
  // prints [TestBean@1ea5671[id=id,name=name,birthday=<null>]]
 }
}

------------------------ 華麗的分割線(xiàn)------------------------------

package org.gson.main;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

/**
 * 簡(jiǎn)單的集合使用
 * @author yansheng
 */
public class SimpleCollectionTest {
 public static void main(String[] args) {
  Gson gson = new Gson();

  // 將ArrayList字符串轉換為 JSON
  List<String> testList = new ArrayList<String>();
  testList.add("first");
  testList.add("second");
  
  String listToJson = gson.toJson(testList);
  System.out.println(listToJson);
  // prints ["first","second"]
  
  // 將JSON字符串轉換為 ArrayList
  List<String> testList2 = (List<String>) gson.fromJson(listToJson,
    new TypeToken<List<String>>() {
    }.getType());
  System.out.println(testList2);
  
  // 將HashMap字符串轉換為 JSON
  Map<String, String> testMap = new HashMap<String, String>();
  testMap.put("id", "id.first");
  testMap.put("name", "name.second");
  
  String mapToJson = gson.toJson(testMap);
  System.out.println(mapToJson);
  // prints {"id":"id.first","name":"name.second"}
  
  // 將JSON字符串轉換為 HashMap
  Map<String, String> userMap2 = (Map<String, String>) gson.fromJson(mapToJson,
    new TypeToken<Map<String, String>>() {
    }.getType());
  System.out.println(userMap2.get("id"));
 }
}


 

------------------------ 華麗的分割線(xiàn)------------------------------

package org.gson.main;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.gson.bean.GroupBean;
import org.gson.bean.UserBean;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

/**
 * 嵌套使用對象Bean
 * @author yansheng
 */
public class NestedTest {
 public static void main(String[] args) {
  UserBean user1 = new UserBean();
  user1.setId("1001");
  user1.setName("張三");
  
  UserBean user2 = new UserBean();
  user2.setId("1002");
  user2.setName("李四");
  
  Map<String, UserBean> userMap = new HashMap<String, UserBean>();
  userMap.put("user1", user1);
  userMap.put("user2", user2);
  
  List<UserBean> userList = new ArrayList<UserBean>();
  userList.add(user1);
  userList.add(user2);
  
  GroupBean groupBean = new GroupBean();
  groupBean.setId("1");
  groupBean.setUserMap(userMap);
  groupBean.setUserList(userList);
  
  
  Gson gson = new Gson();

  String sGroupBean = gson.toJson(groupBean, new TypeToken<GroupBean>() {
  }.getType());
  System.out.println(sGroupBean);
  // {"user1":{"id":1001,"name":"張三"},"user2":{"id":1002,"name":"李四"}}

  // 將JSON字符串轉換為 HashMap
  GroupBean groupBean2 = (GroupBean) gson.fromJson(sGroupBean,
    new TypeToken<GroupBean>() {
    }.getType());
  System.out.println(groupBean2);
  // 張三
 }
}

------------------------ 華麗的分割線(xiàn)-----------------------------

/**

 * 定義對Date的轉換

 */

package org.gson.main;
import java.lang.reflect.Type;

import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;


/**

 *  反串行Data

 */
public class UtilDateDeserializer implements JsonDeserializer<java.util.Date>{
 @Override  
   public java.util.Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)   
             throws JsonParseException {   
         return new java.util.Date(json.getAsJsonPrimitive().getAsLong());   
     }   
}

 ------------------------ 華麗的分割線(xiàn)-----------------------------

package org.gson.main;

import java.lang.reflect.Type;

import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer; 
/**

 *  串行Data

 */
public class UtilDateSerializer implements JsonSerializer<java.util.Date> {

 @Override
 public JsonElement serialize(java.util.Date src, Type typeOfSrc,
   JsonSerializationContext context) {
  return new JsonPrimitive(src.getTime());
 }

}

------------------------ 華麗的分割線(xiàn)-----------------------------

package org.gson.main;

import java.lang.reflect.Type;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.List;

import org.gson.bean.UserBean;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

/**

 * date測試類(lèi)

 */

public class DateTest {
 /**
  * 序列化方法
  * 
  * @param bean
  * @param type
  * @return
  */
 public static String bean2json(Object bean, Type type) {
  Gson gson = new GsonBuilder().registerTypeAdapter(java.util.Date.class,
    new UtilDateSerializer()).setDateFormat(DateFormat.LONG)
    .create();
  return gson.toJson(bean);
 }

 /**
  * 反序列化方法
  * 
  * @param json
  * @param type
  * @return
  */
 public static <T> T json2bean(String json, Type type) {
  Gson gson = new GsonBuilder().registerTypeAdapter(java.util.Date.class,
    new UtilDateDeserializer()).setDateFormat(DateFormat.LONG)
    .create();
  return gson.fromJson(json, type);
 }

 public static void main(String[] args) {
  List<UserBean> testBeanList = new ArrayList<UserBean>();
  UserBean testBean = new UserBean();
  testBean.setId("id");
  testBean.setName("name");
  testBean.setBirthday(new java.util.Date());
  testBeanList.add(testBean);

  java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken<List<UserBean>>() {
  }.getType();
  String beanListToJson = bean2json(testBeanList, type);
  System.out.println("beanListToJson:" + beanListToJson);
  // prints [{"id":"id","name":"name","birthday":1256531559390}]

  List<UserBean> testBeanListFromJson = json2bean(beanListToJson, type);
  System.out.println(testBeanListFromJson);
  // prints [TestBean@77a7f9[id=id,name=name,birthday=Mon Oct 26 12:39:05
  // CST 2009]]
 }
}

json是以字符串為基礎實(shí)現的數據載體格式.所以從大局上來(lái)講相對于xml有其自己的靈活性.所以使用gson可以很好的解決以對象為主題的傳輸問(wèn)題,畢竟<think in java>第一章即提到一切接

對象.但是這樣做也散失了json的靈活性.所以開(kāi)發(fā)的時(shí)候還是需要根據情況選擇的.

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
使用Gson將Java對象轉換為JSON
Json轉換利器Gson之實(shí)例二
Google Gson 使用簡(jiǎn)介
java中的JSON操作
josn 工具包
利用gson將map轉為json示例
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久