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

Java JSON 處理實戰:json-lib 與 org.json 兩大庫完整對比指南

     編輯:Java 相關知識

前言

JSON 是輕量級數據交換格式,Java 生態主流解析庫有 json-lib、org.json、Gson、Jackson 等。本文聚焦前兩者,展示構建與解析核心 API,並對比差異。

一、json-lib 核心 API

依賴:json-lib.jar + ezmorph.jar + commons-lang/logging/beanutils/collections。

1. 集合/Map/Bean/數組/字符串 → JSON

// List
List list = Arrays.asList("first", "second");
JSONArray jsonArray = JSONArray.fromObject(list);

// Map
Map map = new HashMap();
map.put("name", "json");
map.put("bool", true);
map.put("int", 1);
map.put("arr", new String[]{"a","b"});
JSONObject json = JSONObject.fromObject(map);

// Bean
JSONObject jsonObj = JSONObject.fromObject(new JsonBean());

// 數組
boolean[] boolArray = {true, false, true};
JSONArray jsonArray = JSONArray.fromObject(boolArray);

// 字符串
JSONArray jsonArray = JSONArray.fromObject("['json','is','easy']");

// Bean 集合
List list = ...;
JSONArray ja = JSONArray.fromObject(list);

二、完整演示:構建與解析

public class JsonTest {
    public static String buildJson() {
        JSONObject jo = new JSONObject();
        Map map1 = Map.of("name","Alexia","sex","female","age","23");
        Map map2 = Map.of("name","Edward","sex","male","age","24");
        List list = Arrays.asList(map1, map2);
        Employee emp = new Employee("wjl", "female", 24);

        JSONArray ja1 = JSONArray.fromObject(map1);
        JSONArray ja2 = JSONArray.fromObject(list);
        JSONArray ja3 = JSONArray.fromObject(emp);

        jo.put("map", ja1);
        jo.put("employee", ja2); // 此處演示將 list 放入 employee 字段
        return jo.toString();
    }

    public static void parseJson(String jsonString) {
        JSONObject jb = JSONObject.fromObject(jsonString);
        JSONArray ja = jb.getJSONArray("employee");
        List empList = new ArrayList<>();
        for (int i=0; i System.out.println(e.getName()+" "+e.getSex()+" "+e.getAge()));
    }
}

三、json-lib vs org.json 對比

維度json-liborg.json
體積/依賴較重,依賴 ezmorph、commons 多組件極輕,零依賴
Bean 轉換直接雙向轉換 JSONObject.fromObject(bean)不支持直接 Bean 轉換,需先轉 Map
API 風格豐富,支持集合、數組、Map、Bean 直接互轉精簡,核心 JSONObject/JSONArray
適用場景大量 Bean/集合互轉、企業級應用簡單 JSON 構建解析、Android、嵌入式

四、推薦工具

  • 在線編輯/驗證:JSON Editor
  • Eclipse 插件:JSON Tree Analyzer

五、總結

json-lib 功能豐富、Bean 支持完善,適合複雜對象圖序列化;org.json 輕量零依賴,適合簡單場景。根據項目依賴預算、對象複雜度選型。現代項目建議考慮 Gson 或 Jackson,性能更優、API 更現代。

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