首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

JSON 入門與 Java 處理實戰:json-lib、Fastjson 完整範例

     編輯:Java 相關知識

JSON 核心特性

  • JavaScript 物件標記法,輕量級文本資料交換格式
  • 層級結構、支援陣列、語言無關、自我描述
  • 比 XML 更小、更快、更易解析
  • JS 中 `eval()` 直接轉物件,無需解析器

標準 JSON 格式

// 物件
{"firstName":"John","lastName":"Doe"}

// 陣列
{"employees":[
  {"firstName":"John","lastName":"Doe"},
  {"firstName":"Anna","lastName":"Smith"}
]}

// 直接賦值變數
var employees = [
  {"firstName":"Bill","lastName":"Gates"},
  {"firstName":"George","lastName":"Bush"}
];

JavaScript 解析 JSON

var txt = '{"employees":[...]}';
var obj = eval("(" + txt + ")"); // 必須加括號
alert(obj.employees[0].firstName); // Bill

Java 處理 JSON 三大主流方案

1. json-lib(經典)

依賴:commons-lang、commons-beanutils、commons-collections、commons-logging、ezmorph

// List -> JSONArray
JSONArray.fromObject(list);

// Map -> JSONObject
JSONObject.fromObject(map);

// Bean -> JSONObject
JSONObject.fromObject(bean);

// 反序列化
JSONObject.toBean(jsonObject, Bean.class);
JSONArray.toCollection(jsonArray, Bean.class);

完整範例見原文,輸出示例:

[false,false,true,false]
["first","second"]
{"name":"json","bool":true,"int":1,"arr":["a","b"]}
{"name":"kevin","sex":"Male"}
[{"name":"kevin","sex":"Male"},{"name":"maimai","sex":"Femal"}]

2. Fastjson(阿里巴巴,高效能)

特點:速度最快、無依賴、支援 Java Bean/集合/Map/日期/Enum/泛型、Android 相容、Apache 2.0 開源。

核心 API:`com.alibaba.fastjson.JSON`

// 序列化
JSON.toJSONString(object);
JSON.toJSONString(object, true); // 格式化

// 反序列化
JSON.parseObject(text, clazz);
JSON.parseArray(text, clazz);

範例輸出:

{"name":"kevin","sex":"Male"}
[{"name":"maimai","sex":"Female"},{"name":"kevin","sex":"Male"}]
greg

3. 其他庫(Gson、Jackson 等)

此處略去,專案可按需選型。

總結

JSON 憑藉自描述、輕量、跨平台優勢成為前後端交互首選。JS 原生支援,Java 中 Fastjson 效能最佳,json-lib 功能全面,建議新專案優先 Fastjson。

出處:bianceng.cn

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved