JSON 對象封裝教程

JSON 對象封裝方法

在 Java 中封裝 JSON 對象通常使用第三方庫,如 org.jsonGsonJackson。以下是幾種常見的方法:

使用 org.json 庫

添加 Maven 依賴:

<dependency><groupId>org.json</groupId><artifactId>json</artifactId><version>20231013</version>
</dependency>

創建和封裝 JSON 對象:

import org.json.JSONObject;JSONObject jsonObject = new JSONObject();
jsonObject.put("name", "John");
jsonObject.put("age", 30);
jsonObject.put("isStudent", false);String jsonString = jsonObject.toString();

使用 Gson 庫

添加 Maven 依賴:

<dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.10.1</version>
</dependency>

通過對象轉換:

import com.google.gson.Gson;class Person {String name = "John";int age = 30;boolean isStudent = false;
}Gson gson = new Gson();
String json = gson.toJson(new Person());

手動構建:

import com.google.gson.JsonObject;JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("name", "John");
jsonObject.addProperty("age", 30);
jsonObject.addProperty("isStudent", false);String jsonString = jsonObject.toString();

使用 Jackson 庫

添加 Maven 依賴:

<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.15.2</version>
</dependency>

通過對象轉換:

import com.fasterxml.jackson.databind.ObjectMapper;ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(new Person());

手動構建:

import com.fasterxml.jackson.databind.node.ObjectNode;
import com.fasterxml.jackson.databind.JsonNodeFactory;ObjectNode node = JsonNodeFactory.instance.objectNode();
node.put("name", "John");
node.put("age", 30);
node.put("isStudent", false);String jsonString = node.toString();

性能比較

  • org.json:輕量級,適合簡單場景
  • Gson:Google 出品,易用性高
  • Jackson:性能最優,功能最強大

復雜對象封裝

對于嵌套對象或列表:

// Gson 示例
class Address {String city;String street;
}class User {String name;List<Address> addresses;
}User user = new User();
// 設置屬性...Gson gson = new Gson();
String json = gson.toJson(user);

注意事項

  • 處理日期時需要自定義序列化/反序列化
  • 循環引用會導致棧溢出,需特別處理
  • 大量數據時考慮流式 API(如 Jackson 的 JsonGenerator)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/93545.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/93545.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/93545.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【WRF-Chem】EDGAR 排放數據處理:分部門合并轉化為二進制(Python全代碼)

目錄 process.py process_biofl.py process_fossil.py process_micro.py process_sector.py 參考 process.py 讀取 EDGAR 排放數據庫中 2000 至 2023 年間不同行業的甲烷(CH?)排放數據,進行合并處理,并將總排放以二進制格式保存到文件中。 導入必要的庫 import numpy as n…

【學習過程記錄】【czsc】1、安裝

文章目錄 背景 安裝 安裝python 安裝czsc 功能測試 附錄 奇葩的報錯 背景 詳見: https://github.com/waditu/czsc 安裝 安裝python !重要!作者強調,python必須是大于等于3.8 為此呢,我也是花了一點時間裝了一個python3.13。 安裝czsc 關于czsc的安裝呢,官方也是給出…

Python批量生成N天前的多word個文件,并根據excel統計數據,修改word模板,合并多個word文件

1&#xff0c;需求 根據word模板文件&#xff0c;生成多個帶日期后綴的word文件根據excel-每日告警統計數量&#xff0c;逐個修改當日的文檔2&#xff0c;實現 shell腳本&#xff1a;根據word模板文件&#xff0c;生成多個帶日期后綴的word文件 #!/bin/bash # 生成近一年日期 …

基于uni-app的血糖血壓刻度滑動控件

想要做一個基于uni-app的血糖血壓刻度滑動控件&#xff0c;hbuilder市場沒有好的&#xff0c;參照別人的寫了一個。如圖&#xff1a;源碼&#xff0c;自己放入components里面。<!-- 刻度滑動選擇 --> <template><view><view class"slide-title"…

C語言(02)——標準庫函數大全(持續更新)

想要了解更多的C語言知識&#xff0c;可以訂閱下面的專欄&#xff0c;里面也有很多品質好文&#xff1a; 打怪升級之路——C語言之路_ankleless的博客-CSDN博客 還在持續更新中&#xff0c;以下是學習過程中遇到的一些庫函數&#xff08;排序不分先后&#xff09;&#xff1a…

永磁同步電機無速度算法--靜態補償電壓模型Harnefors觀測器

一、原理介紹本文基于Harnefors教授提出的靜態補償電壓模型&#xff0c;可以實現帶載零速啟動、正反轉切換等功能&#xff0c;原理清晰&#xff0c;實現簡便。二、仿真模型在MATLAB/simulink里面驗證所提算法&#xff0c;搭建仿真。采用和實驗中一致的控制周期1e-4&#xff0c;…

[SKE]Python gmssl庫的C綁定

Python gmssl庫的C綁定 摘要:本文展示gmssl庫的C綁定,并給出完整代碼。將參考模型從Python腳本遷移到純C代碼中使用gmssl庫(TongSuo項目,支持國密算法如SM4,同時兼容AES、DES、3DES、RSA等)。這樣,UVM(SystemVerilog)可以通過DPI-C直接調用C函數,而無需嵌入Py…

4.方法的使用

方法是指一段具有獨立功能的代碼塊&#xff0c;只有被調用時才會執行方法的主要作用體現在&#xff1a;代碼組織&#xff1a;將原本擠在一起的臃腫代碼按照功能進行分類管理例如&#xff1a;將用戶注冊的驗證邏輯、數據庫操作、結果返回等分離成不同方法提高復用性&#xff1a;…

day21-Excel文件解析

目錄 1. 概述 2. Apache POI 3. XSSF解析Excel文件 3.1. 添加Jar包依賴 3.2. Workbook&#xff08;Excel文件&#xff09; 3.2.2. 加載&#xff08;解析&#xff09;Excel文件 3.3. Sheet &#xff08;工作簿&#xff09; 3.3.1. 創建工作簿 3.3.2. 獲取工作簿 3.3.3.…

與 TRON (波場) 區塊鏈進行交互的命令行工具 (CLI): tstroncli

源碼倉庫 一個基于 Node.js 和 TypeScript 構建的&#xff0c;用于與 TRON (波場) 區塊鏈進行交互的命令行工具 (CLI)。 本項目旨在提供一個簡單、可擴展的框架&#xff0c;讓開發者可以輕松地通過命令行調用 TRON 的 HTTP API&#xff0c;實現查詢鏈上信息、發送交易等操作。…

rabbitmq--默認模式(點對點)

導入包&#xff1a;<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency>application.yml springrabbitmq:host: localhostport: 5672username: guestpassword: gue…

外網訪問文檔編輯器Docsify(Windows版本),內網穿透技術應用簡便方法

如果你正在為項目寫文檔&#xff0c;但又不想折騰復雜的構建流程&#xff0c;也不想維護一堆靜態 HTML 文件&#xff0c;那你一定要試試 docsify。docsify 是一個基于 JavaScript 的開源文檔生成工具&#xff0c;它最大的特點就是“無構建”&#xff1a;你只需要寫 Markdown 文…

第4章唯一ID生成器——4.5 美團點評開源方案Leaf

Leaf是美團點評公司基礎研發平臺推出的一個唯一ID生成器服務&#xff0c;其具備高可靠性、低延遲、全局唯一等特點&#xff0c;目前已經被廣泛應用于美團金融、美團外賣、美團酒旅等多個部門。Leaf根據不同業務的需求分別實現了Leaf-segment和Leaf-snowflake兩種方案&#xff0…

分布式搜索和分析引擎Elasticsearch實戰指南

ES 介紹與安裝 Elasticsearch&#xff0c; 簡稱 ES&#xff0c;它是個開源分布式搜索引擎&#xff0c;它的特點有&#xff1a;分布式&#xff0c;零配置&#xff0c;自動發現&#xff0c;索引自動分片&#xff0c;索引副本機制&#xff0c;restful 風格接口&#xff0c;多數據源…

【13】C# 窗體應用WinForm——.NET Framework、WinForm、工程創建、工具箱簡介、窗體屬性及創建

文章目錄1. WinForm工程創建 及 界面介紹1.1 WinForm工程創建1.2 窗體 Form1.cs “查看代碼”1.3 打開窗體設計器2. 工具箱3. 窗體屬性及創建3.1 窗體屬性3.2 實例&#xff1a;創建一個新窗體3.2.1 添加新Windows窗體3.2.2 窗體屬性配置3.2.3 設置該窗體為啟動窗體WinForm 是 W…

論文閱讀-IGEV

文章目錄1 概述2 模塊2.1 總體說明2.2 特征抽取器2.3 CGEV2.4 基于Conv-GRU的更新算子2.5 空間上采樣2.6 損失函數3 效果參考文獻1 概述 在雙目深度估計中&#xff0c;有一類是基于3D卷積的方法&#xff0c;代表就是PSMNet&#xff0c;它應用 3D 卷積編碼器-解碼器來聚合和正則…

[2025CVPR-圖象分類方向]SPARC:用于視覺語言模型中零樣本多標簽識別的分數提示和自適應融合

1. ?背景與問題定義? 視覺語言模型&#xff08;如CLIP&#xff09;在單標簽識別中表現出色&#xff0c;但在零樣本多標簽識別&#xff08;MLR&#xff09;任務中表現不佳。MLR要求模型識別圖像中多個對象&#xff08;例如&#xff0c;圖像包含“貓”和“沙發”&#xff09;&…

2025創始人IP如何破局?

內容持續更新卻無人點贊&#xff0c;課程精心打磨卻無人報名&#xff0c;直播賣力講解卻無人停留 —— 明明有內容、有經驗、有成果&#xff0c;卻始終難以打動用戶。問題的核心&#xff0c;或許在于你尚未打造出真正的 “創始人IP”。?一、創始人IP&#xff1a;不止標簽&…

告別配置混亂!Spring Boot 中 Properties 與 YAML 的深度解析與最佳實踐

一、Spring配置文件 1.1、什么是Spring配置 Spring配置指的是在Spring框架中定義和管理應用程序組件&#xff08;如Bean&#xff09;及其依賴關系的過程 作用&#xff1a; 配置文件主要用于解決硬編碼問題&#xff0c;它將可能變更的信息集中存放。程序啟動時&#xff0c;會從…

無人機噴灑系統技術要點與難點解析

一、 模塊運行方式1. 任務規劃與加載模塊&#xff1a;輸入&#xff1a;農田邊界、障礙物信息、作物類型、病蟲害信息、所需噴灑量、天氣條件。運行&#xff1a;利用地面站軟件或移動APP&#xff0c;規劃最優飛行路徑&#xff0c;設定飛行高度、速度、噴灑參數、作業區域。將規…