首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

JSON 對象核心特點與 Map/List 異同對比

     編輯:程式設計疑難解答

JSON 對象基本形式

var obj = {
    "name": "張三",
    "age": 25,
    "skills": ["Java", "Python", "JS"],
    "address": {
        "city": "北京",
        "zip": "100000"
    },
    "active": true
};

核心特點

特點說明
鍵值對集合無序、鍵唯一、鍵必須雙引號字符串
值類型豐富字符串、數字、布爾、null、數組、對象 (嵌套)
純文本格式跨語言、跨平台、人類可讀、易傳輸 (HTTP API 標準)
無註釋/函數純數據描述,非編程語言

JSON vs Map vs List 異同

維度JSON ObjectMap (HashMap)List (ArrayList)
數據結構鍵值對樹 (巢狀)鍵值對扁平表有序元素序列
鍵類型只能字符串任意對象 (需 equals/hashCode)無鍵,靠索引
值類型JSON 子類型 (遞歸)任意對象任意對象
順序標準無序 (實現常保留插入序)HashMap 無序, LinkedHashMap 有序**嚴格有序**
序列化原生文本 (JSON.stringify)需庫 (Jackson/Gson)需庫
查詢路徑表達式 (JSONPath)get(key) O(1)get(index) O(1)
適用場景配置、API傳輸、存儲、日志緩存、索引、計數、分組列表、隊列、有序集合

代碼互轉示例

// Java (Jackson)
ObjectMapper mapper = new ObjectMapper();

// JSON字符串 -> Map
String json = "{\"a\":1,\"b\":[2,3]}";
Map map = mapper.readValue(json, new TypeReference>(){});

// Map -> JSON字符串
Map m = new HashMap<>();
m.put("x", 100);
m.put("y", Arrays.asList(1,2,3));
String jsonOut = mapper.writeValueAsString(m); // {"x":100,"y":[1,2,3]}

// JSON -> List
List list = mapper.readValue("[1,2,3]", new TypeReference>(){});

常見誤區

  • ❌ {a:1} 是合法 JSON → **鍵必須雙引號** {"a":1}。
  • ❌ JSON 支持註釋 → **標準 JSON 不支持**,需用 JSONC/JSON5 或去註釋預處理。
  • ❌ JSON 對象鍵有序 → **RFC 7159 規定無序**,雖然現代解析器 (JS V8, Jackson) 保留插入順序,但**不可依賴**。

總結

JSON 是**輕量級數據交換格式**,本質是「帶類型標籤的巢狀鍵值對文本」。Map 是內存中**高性能鍵值索引**,List 是**有序序列**。三者在序列化/反序列化時相互轉換,核心區別在於**鍵約束、順序保證、類型系統、使用場景**。

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