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

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

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

開(kāi)通VIP
JSON 入門(mén)指南(3)
將 Number 表示為 JSON 就容易得多,利用 Java 的多態(tài),我們可以處理 Integer,Long,Float 等多種 Number 格式:

static String number2Json(Number number) {
  return number.toString();
}

  Boolean 類(lèi)型也可以直接通過(guò) toString() 方法得到 JSON 的表示:

static String boolean2Json(Boolean bool) {
  return bool.toString();
}

  要將數組編碼為 JSON 格式,可以通過(guò)循環(huán)將每一個(gè)元素編碼出來(lái):

static String array2Json(Object[] array) {
  if (array.length==0)
    return "[]";
  StringBuilder sb = new StringBuilder(array.length << 4);
  sb.append('[');
  for (Object o : array) {
    sb.append(toJson(o));
    sb.append(',');
  }
  // 將最后添加的 ',' 變?yōu)?']':
  sb.setCharAt(sb.length()-1, ']');
  return sb.toString();
}

  最后,我們需要將 Map<String, Object> 編碼為 JSON 格式,因為 JavaScript 的 Object 實(shí)際上對應的是 Java 的 Map<String, Object> 。該方法如下:

static String map2Json(Map<String, Object> map) {
  if (map.isEmpty())
    return "{}";
  StringBuilder sb = new StringBuilder(map.size() << 4);
  sb.append('{');
  Set<String> keys = map.keySet();
  for (String key : keys) {
    Object value = map.get(key);
    sb.append('"');
    sb.append(key);
    sb.append('"');
    sb.append(':');
    sb.append(toJson(value));
    sb.append(',');
  }
  // 將最后的 ',' 變?yōu)?'}':
  sb.setCharAt(sb.length()-1, '}');
  return sb.toString();
}
 為了統一處理任意的 Java 對象,我們編寫(xiě)一個(gè)入口方法 toJson(Object),能夠將任意的 Java 對象編碼為 JSON 格式:

public static String toJson(Object o) {
  if (o==null)
    return "null";
  if (o instanceof String)
    return string2Json((String)o);
  if (o instanceof Boolean)
    return boolean2Json((Boolean)o);
  if (o instanceof Number)
    return number2Json((Number)o);
  if (o instanceof Map)
    return map2Json((Map<String, Object>)o);
  if (o instanceof Object[])
    return array2Json((Object[])o);
  throw new RuntimeException("Unsupported type: " + o.getClass().getName());
}

  我們并未對 Java 對象作嚴格的檢查。不被支持的對象(例如 List)將直接拋出 RuntimeException 。此外,為了保證輸出的 JSON 是有效的,Map<String, Object> 對象的 Key 也不能包含特殊字符。細心的讀者可能還會(huì )發(fā)現循環(huán)引用的對象會(huì )引發(fā)無(wú)限遞歸,例如,精心構造一個(gè)循環(huán)引用的 Map,就可以檢測到 StackOverflowException:

@Test(expected=StackOverflowError.class)
public void testRecurrsiveMap2Json() {
  Map<String, Object> map = new HashMap<String, Object>();
  map.put("key", map);
  JsonUtil.map2Json(map);
}

  好在服務(wù)器處理的 JSON 數據最終都應該轉化為簡(jiǎn)單的 JavaScript 對象,因此,遞歸引用的可能性很小。

 

  最后,通過(guò) Servlet 或 MVC 框架輸出 JSON 時(shí),需要設置正確的 MIME 類(lèi)型(application/json)和字符編碼。假定服務(wù)器使用 UTF-8 編碼,則可以使用以下代碼輸出編碼后的 JSON 文本:

response.setContentType("application/json;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
PrintWriter pw = response.getWriter();
pw.write(JsonUtil.toJson(obj));
pw.flush();

  小結

  JSON 已經(jīng)是 JavaScript 標準的一部分。目前,主流的瀏覽器對 JSON 支持都非常完善。應用 JSON,我們可以從 XML 的解析中擺脫出來(lái),對那些應用 Ajax 的 Web 2.0 網(wǎng)站來(lái)說(shuō),JSON 確實(shí)是目前最靈活的輕量級方案。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
JSON 入門(mén)指南
Java服務(wù)器端List對象轉換為JSON對象并返回客戶(hù)端實(shí)例
一個(gè)生成json格式的類(lèi)
Java關(guān)于JSON數據格式轉換
javascript中對變量類(lèi)型的判斷
java 反射輸出對象的所有屬性
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

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