欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在Java中讀取和解析JSON文件的示例代碼

 更新時間:2025年06月08日 10:30:29   作者:蟹蟹蟹風流  
我們在日常開發(fā)中少不了和JSON數(shù)據(jù)打交道,JSON是輕量、結構化的數(shù)據(jù)交換格式,支持跨語言,本文給大家詳細介紹了如何在 Java 中讀取和解析 JSON 文件,并有詳細的代碼示例供大家參考,需要的朋友可以參考下

JSON基礎概念

JSON(JavaScript Object Notation)是一種輕量級數(shù)據(jù)交換格式,具有以下核心特征:

  • ??簡潔性??:純文本格式,易于閱讀和編寫
  • ??跨語言??:支持Java/Python/JavaScript等所有主流語言
  • ??高效性??:比XML減少60%的數(shù)據(jù)體積
  • ??結構化??:天然支持對象和數(shù)組的嵌套表達

??基本語法規(guī)范?

{
  "name": "張三",        // 字符串類型
  "age": 28,            // 數(shù)字類型
  "isStudent": false,   // 布爾類型
  "courses": [          // 數(shù)組類型
    "Math",
    "Physics"
  ],
  "details": {          // 對象類型
    "address": "北京",
    "email": "zhangsan@example.com"
  }
}

Java 中處理 JSON 方案

主流實現(xiàn)方式分為三類:

  • ??原生解析??:使用JDK內置的org.json包(需 JDK 9+
  • ??第三方庫??:推薦使用 Google GsonJackson
  • ??輕量級工具??:json-simple(適合簡單場景)

json-simple 庫實戰(zhàn)

??步驟1:添加依賴?

<!-- Maven配置 -->
<dependency>
    <groupId>com.googlecode.json-simple</groupId>
    <artifactId>json-simple</artifactId>
    <version>1.1.1</version>
</dependency>

??步驟2:創(chuàng)建 JSON 對象?

import org.json.simple.JSONObject;

public class JsonCreator {
    public static void main(String[] args) {
        JSONObject person = new JSONObject();
        person.put("name", "李四");
        person.put("age", 30);
        person.put("married", false);
        
        System.out.println(person.toJSONString());
        // 輸出:{"name":"李四","age":30,"married":false}
    }
}

??步驟3:解析JSON文件?

import org.json.simple.parser.JSONParser;
import org.json.simple.JSONObject;
import java.io.FileReader;

public class JsonReader {
    public static void main(String[] args) {
        JSONParser parser = new JSONParser();
        
        try (FileReader reader = new FileReader("data.json")) {
            JSONObject jsonObject = (JSONObject) parser.parse(reader);
            
            String name = (String) jsonObject.get("name");
            long age = (Long) jsonObject.get("age");
            System.out.println("姓名:" + name);
            System.out.println("年齡:" + age);
            
            // 解析嵌套數(shù)組
            JSONArray courses = (JSONArray) jsonObject.get("courses");
            System.out.println("課程列表:");
            for (Object course : courses) {
                System.out.println("\t- " + course);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

高級解析技巧

??1. 處理復雜嵌套結構?

// 假設JSON結構:
// {
//   "students": [
//     {"name": "王五", "score": 85},
//     {"name": "趙六", "score": 92}
//   ]
// }

JSONArray students = (JSONArray) jsonObject.get("students");
for (Object obj : students) {
    JSONObject student = (JSONObject) obj;
    System.out.println("學生:" + student.get("name") + ",成績:" + student.get("score"));
}

??2. 類型安全訪問?

long safeAge = jsonObject.containsKey("age") 
    ? (Long) jsonObject.get("age") 
    : 0L; // 默認值處理

??3. 文件寫入操作?

try (FileWriter file = new FileWriter("output.json")) {
    file.write(jsonObject.toJSONString());
    System.out.println("數(shù)據(jù)已保存到output.json");
} catch (IOException e) {
    e.printStackTrace();
}

技術選型對比

方案優(yōu)點缺點
json-simple依賴少/簡單場景適用功能有限/性能一般
GsonGoogle官方支持/類型安全學習曲線較陡
Jackson工業(yè)級性能/生態(tài)完善配置復雜度較高

最佳實踐建議

  • ??性能敏感場景??:優(yōu)先使用Jackson(基準測試顯示其解析速度比Gson快30%)
  • ??微服務架構??:結合Spring Boot的@RequestBody自動綁定功能
  • ??數(shù)據(jù)校驗??:使用Hibernate Validator實現(xiàn)Bean Validation
  • ??異常處理??:統(tǒng)一捕獲ParseException并返回標準錯誤碼
// Spring Boot控制器示例
@RestController
public class UserController {
    @PostMapping("/users")
    public ResponseEntity<?> createUser(@Valid @RequestBody UserDto user) {
        // 自動將JSON轉換為UserDto對象
        userService.save(user);
        return ResponseEntity.ok("用戶創(chuàng)建成功");
    }
}

通過掌握JSON處理技術,可以有效提升系統(tǒng)的數(shù)據(jù)交互能力,為構建 RESTful API 和微服務架構奠定堅實基礎。建議根據(jù)項目需求選擇合適的解析方案,并注重異常處理和性能優(yōu)化。

以上就是在Java中讀取和解析JSON文件的示例代碼的詳細內容,更多關于Java讀取和解析JSON文件的資料請關注腳本之家其它相關文章!

相關文章

  • 解決Test類中不能使用Autowired注入bean的問題

    解決Test類中不能使用Autowired注入bean的問題

    這篇文章主要介紹了解決Test類中不能使用Autowired注入bean的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • IDEA提示內存不足low memory的錯誤解決

    IDEA提示內存不足low memory的錯誤解決

    運行項目變得很卡,這種情況比較能直觀感受出來,Idea內存指示器,則需要設置才能看到,本文主要介紹了IDEA提示內存不足low memory的錯誤解決,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • JAVA中的OutputStreamWriter流解析

    JAVA中的OutputStreamWriter流解析

    這篇文章主要介紹了JAVA中的OutputStreamWriter流解析,OutputStreamWriter提供了一種方便的方式將字符數(shù)據(jù)寫入到輸出流中,并進行字符編碼轉換,它是Java中處理字符流和字節(jié)流之間轉換的重要工具之一,需要的朋友可以參考下
    2023-10-10
  • Maven管理多模塊應用的統(tǒng)一版本號實現(xiàn)

    Maven管理多模塊應用的統(tǒng)一版本號實現(xiàn)

    本文主要介紹了Maven管理多模塊應用的統(tǒng)一版本號實現(xiàn),使用versions-maven-plugin插件和占位符結合flatten-maven-plugin插件來實現(xiàn),感興趣的可以了解一下
    2024-12-12
  • IDEA提示:Boolean method ‘xxx‘ is always inverted問題

    IDEA提示:Boolean method ‘xxx‘ is always&nb

    這篇文章主要介紹了IDEA提示:Boolean method ‘xxx‘ is always inverted問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • SpringBoot配置lombok與logback過程解析

    SpringBoot配置lombok與logback過程解析

    這篇文章主要介紹了SpringBoot配置lombok與logback過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • MyBatis動態(tài)SQL特性詳解

    MyBatis動態(tài)SQL特性詳解

    動態(tài)SQL可以省略很多拼接SQL的步驟,使用類似于JSTL方式,下面這篇文章主要給大家介紹了關于Mybatis動態(tài)SQL特性的相關資料,文字通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-11-11
  • 使用java.util.Timer實現(xiàn)任務調度

    使用java.util.Timer實現(xiàn)任務調度

    這篇文章主要為大家詳細介紹了使用java.util.Timer實現(xiàn)任務調度,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Spring注解開發(fā)生命周期原理解析

    Spring注解開發(fā)生命周期原理解析

    這篇文章主要介紹了Spring注解開發(fā)生命周期原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • Java打印九九乘法表代碼詳情

    Java打印九九乘法表代碼詳情

    這篇文章主要介紹了Java打印九九乘法表,使用了雙重for循環(huán),使用do{}while()實現(xiàn)打印九九乘法表這些好玩的語法實現(xiàn),感興趣的小伙伴可參考下面文章內容
    2021-09-09

最新評論