JAVA生成并導出json文件

將一個list集合轉換成json文件并導出:

     
數據集合:
    List<Object> agencyList = new ArrayList<Object>();Map<String, Object> agencyMap = new HashMap<>();agencyMap.put("agencyName",agencyName);agencyMap.put("agencyAddress", agencyAddress);agencyMap.put("companyName", companyName);agencyMap.put("logoImageId", logoImageId);agencyMap.put("auctionAddress", agencyAuctionAddress);agencyMap.put("logoImage", logoImage);agencyList.add(agencyMap);

?

    
將集合數據轉換為json字符串(當然map集合亦可以):
     JSONArray jsonObject = JSONArray.fromObject(agencyList);String jsonString1 = jsonObject.toString();CreateFileUtil.createJsonFile(jsonString1, "/fileStorage/download/json", "agency");

?

public class CreateFileUtil {/*** 生成.json格式文件*/public static boolean createJsonFile(String jsonString, String filePath, String fileName) {// 標記文件生成是否成功boolean flag = true;// 拼接文件完整路徑String fullPath = filePath + File.separator + fileName + ".json";// 生成json格式文件try {// 保證創建一個新文件File file = new File(fullPath);if (!file.getParentFile().exists()) { // 如果父目錄不存在,創建父目錄
                file.getParentFile().mkdirs();}if (file.exists()) { // 如果已存在,刪除舊文件
                file.delete();}file.createNewFile();if(jsonString.indexOf("'")!=-1){  //將單引號轉義一下,因為JSON串中的字符串類型可以單引號引起來的  jsonString = jsonString.replaceAll("'", "\\'");  }  if(jsonString.indexOf("\"")!=-1){  //將雙引號轉義一下,因為JSON串中的字符串類型可以單引號引起來的  jsonString = jsonString.replaceAll("\"", "\\\"");  }  if(jsonString.indexOf("\r\n")!=-1){  //將回車換行轉換一下,因為JSON串中字符串不能出現顯式的回車換行  jsonString = jsonString.replaceAll("\r\n", "\\u000d\\u000a");  }  if(jsonString.indexOf("\n")!=-1){  //將換行轉換一下,因為JSON串中字符串不能出現顯式的換行  jsonString = jsonString.replaceAll("\n", "\\u000a");  }  // 格式化json字符串jsonString = JsonFormatTool.formatJson(jsonString);// 將格式化后的字符串寫入文件Writer write = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");write.write(jsonString);write.flush();write.close();} catch (Exception e) {flag = false;e.printStackTrace();}// 返回是否成功的標記return flag;}}

?

?

public class JsonFormatTool {/*** 單位縮進字符串。*/private static String SPACE = "   ";/*** 返回格式化JSON字符串。* * @param json 未格式化的JSON字符串。* @return 格式化的JSON字符串。*/public static String formatJson(String json) {StringBuffer result = new StringBuffer();int length = json.length();int number = 0;char key = 0;// 遍歷輸入字符串。for (int i = 0; i < length; i++) {// 1、獲取當前字符。key = json.charAt(i);// 2、如果當前字符是前方括號、前花括號做如下處理:if ((key == '[') || (key == '{')) {// (1)如果前面還有字符,并且字符為“:”,打印:換行和縮進字符字符串。if ((i - 1 > 0) && (json.charAt(i - 1) == ':')) {result.append('\n');result.append(indent(number));}// (2)打印:當前字符。
                result.append(key);// (3)前方括號、前花括號,的后面必須換行。打印:換行。result.append('\n');// (4)每出現一次前方括號、前花括號;縮進次數增加一次。打印:新行縮進。number++;result.append(indent(number));// (5)進行下一次循環。continue;}// 3、如果當前字符是后方括號、后花括號做如下處理:if ((key == ']') || (key == '}')) {// (1)后方括號、后花括號,的前面必須換行。打印:換行。result.append('\n');// (2)每出現一次后方括號、后花括號;縮進次數減少一次。打印:縮進。number--;result.append(indent(number));// (3)打印:當前字符。
                result.append(key);// (4)如果當前字符后面還有字符,并且字符不為“,”,打印:換行。if (((i + 1) < length) && (json.charAt(i + 1) != ',')) {result.append('\n');}// (5)繼續下一次循環。continue;}// 4、如果當前字符是逗號。逗號后面換行,并縮進,不改變縮進次數。/*if ((key == ',')) {result.append(key);result.append('\n');result.append(indent(number));continue;}*/// 5、打印:當前字符。
            result.append(key);}return result.toString();}/*** 返回指定次數的縮進字符串。每一次縮進三個空格,即SPACE。* * @param number 縮進次數。* @return 指定縮進次數的字符串。*/private static String indent(int number) {StringBuffer result = new StringBuffer();for (int i = 0; i < number; i++) {result.append(SPACE);}return result.toString();}
}

?

?

?

當然其中涉及到轉義字符處理的問題。

?

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

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

相關文章

《ASP.NET Core 6框架揭秘》實例演示[02]:基于路由、MVC和gRPC的應用開發

ASP.NET Core可以視為一種底層框架&#xff0c;它為我們構建出了基于管道的請求處理模型&#xff0c;這個管道由一個服務器和多個中間件構成&#xff0c;而與路由相關的EndpointRoutingMiddleware和EndpointMiddleware是兩個最為重要的中間件。MVC和gRPC開發框架就建立在路由基…

什么是 JWT -- JSON WEB TOKEN

什么是JWT Json web token (JWT), 是為了在網絡應用環境間傳遞聲明而執行的一種基于JSON的開放標準&#xff08;(RFC 7519).該token被設計為緊湊且安全的&#xff0c;特別適用于分布式站點的單點登錄&#xff08;SSO&#xff09;場景。JWT的聲明一般被用來在身份提供者和服務提…

Re-installation failed due to different application signatures.

問題&#xff1a; 在虛擬設備上運行程序時提示安裝失敗。 [2010-08-08 00:38:30 - myApp] Re-installation failed due to different application signatures. [2010-08-08 00:38:30 - myApp] You must perform a full uninstall of the application. WARNING: This will remo…

【ArcGIS微課1000例】0024:ArcGIS如何連接文件夾、設認工作目錄、默認地理數據庫、相對路徑與絕對路徑?

ArcGIS軟件在初次安裝完成或者為了工作的方便,通常需要連接到指定的文件夾、設置默認工作路徑,默認地理數據庫、相對路徑與絕對路徑等。 文章目錄 1. 文件夾連接2. 默認工作目錄3. 默認地理數據庫4. 相對路徑與絕對路徑1. 文件夾連接 在初次安裝完ArcGIS時,默認沒有文件夾連…

shell 用環境變量的值修改properties文件

假設有如下屬性文件 demo.properties user.nametest user.password123456 ............................... 需求&#xff1a;先需要通過shell 腳本將 user.name 和 user.password 的value值替換為實際需要的用戶名和密碼&#xff0c; 將可以通過如下方式實現&#xff1a; sed …

【Spring Cloud】Redis緩存接入監控、運維平臺CacheCloud

CacheCloud CacheCloud提供一個Redis云管理平臺&#xff1a;實現多種類型(Redis Standalone、Redis Sentinel、Redis Cluster)自動部署、解決Redis實例碎片化現象、提供完善統計、監控、運維功能、減少運維成本和誤操作&#xff0c;提高機器的利用率&#xff0c;提供靈活的伸縮…

[Win10應用開發] 使用 Windows 推送服務 (WNS)

前言 Windows 推送服務&#xff08;WNS&#xff09;也是 Win10 通知機制中的一種&#xff0c;今天與大家一起學習一下有關WNS的相關知識。使用 Windows 推送服務的前提是你需要有一個微軟開發者賬號&#xff0c;這樣才能得到一些合法的密鑰信息用于與WNS服務器完成通訊操作。 …

Windows 11 新版 25158 推送!全新搜索框和圖標、小組件動態內容和通知標記

面向 Dev 頻道的 Windows 預覽體驗成員&#xff0c;微軟現已推送 Windows 11 預覽版 Build 25158。主要變化1.微軟宣布為 Windows 11 搜索引入全新視覺體驗&#xff0c;由搜索框或重新設計的搜索圖標呈現。目前該功能僅向部分 Windows 預覽體驗成員推出&#xff0c;將在未來向所…

Python之路【第一篇】:環境搭建

虛擬機安裝 下載VMwareWorkstation以及centos,安裝完VMwareWorkstation&#xff0c;創建一個虛擬機&#xff0c;然后在新創建的虛擬機上運行centos linux環境搭建 公司開發使用linux的原因&#xff1a;穩定、安全、開源 在虛擬機中使用centos這個版本&#xff0c;作為服務器端的…

【BIM入門實戰】Revit創建地形的幾種方法及優缺點

Revit在體量和場地選項卡的【地形表面】工具可以創建三維地形,有三種方法:放置點、指定點文件和導入實例文件、傾斜攝影點云技術和InfraWorks地形生成。 文章目錄 1. 放置點2. 指定點文件3. 導入實例文件4. 傾斜攝影點云技術5. InfraWorks地形生成1. 放置點 放置點功能位于體…

2024年起重機司機(限門式起重機)證考試題庫及起重機司機(限門式起重機)試題解析

題庫來源&#xff1a;安全生產模擬考試一點通公眾號小程序 2024年起重機司機(限門式起重機)證考試題庫及起重機司機(限門式起重機)試題解析是安全生產模擬考試一點通結合&#xff08;安監局&#xff09;特種作業人員操作證考試大綱和&#xff08;質檢局&#xff09;特種設備作…

微服務架構下的統一身份認證和授權

一、預備知識 本文討論基于微服務架構下的身份認證和用戶授權的技術方案&#xff0c;在閱讀之前&#xff0c;最好先熟悉并理解以下幾個知識點&#xff1a; 微服務架構相關概念&#xff1a;服務注冊、服務發現、API 網關身份認證和用戶授權&#xff1a;SSO、CAS、OAuth2.0、JW…

使用vh來制作高度自適應頁面和元素垂直居中

為什么80%的碼農都做不了架構師&#xff1f;>>> vh單位 vh是CSS3中的一個長度單位&#xff0c;其值為&#xff1a;100vh 視窗高度。即如果窗口高度為500px&#xff0c;那么 1vh 5px。具體的值會隨著瀏覽器視窗高度的改變而實時改變&#xff0c;因此可以利用這個單…

傳智168期JavaEE struts2杜宏 day32~day33(2017年2月15日23:27:09)

struts2學習完畢&#xff0c;寒假學習效率還不錯。 筆記鏈接 鏈接&#xff1a;http://pan.baidu.com/s/1boBJLVp 密碼&#xff1a;wwl4轉載于:https://www.cnblogs.com/huangtao1996/p/6403886.html

GitLab的安裝、配置、使用

前言上周去參與“中國數字經濟創新發展大會”了&#xff0c;然后又忙新項目的事情&#xff0c;博客又有一段時間沒有更新&#xff0c;今天周一事情比較少&#xff0c;立刻開始寫文&#xff0c;最近有挺多值得記錄的東西~進入正文&#xff0c;最近我們搭了個Gitlab&#xff0c;并…

【BIM入門實戰】Navisworks2018簡體中文安裝教程(附安裝包下載)

Navisworks是Autodesk公司開發的一款三維模型可視化軟件,它以輕量化的運行方式進行BIM成果的后期處理及整合,是一款非常實用的軟件。基于Navisworks,項目的參建方可以在施工前進行模擬施工,以達到減少返工、縮短工期、提供經濟效益的目的。 Navisworks同時支持4D和5D模擬,…

微軟 Windows11 Build 22000.71 更新(KB5004252)發布

微軟推出了一個全新的娛樂小工具。這一部件允許用戶查看 Microsoft Store 中可用的新電影和精選電影。選擇一部電影會引導用戶到 Microsoft Store 查看有關該影片的更多信息。 7 月 16 日消息 今日凌晨&#xff0c;微軟宣布向預覽體驗計劃用戶發布 Windows 11 Build22000.71 更…

Python入門教程之Python保留字符大全

Python中的保留字不能用作常數或變數&#xff0c;或任何其他標識符名稱。所有 Python 的關鍵字只包含小寫字母。 andexecnotassertfinallyorbreakforpassclassfromprintcontinueglobalraisedefifreturndelimporttryelifinwhileelseiswithexceptlambdayield轉載于:https://blog.…

Linux操作系統基礎解析之(五)——grep命令家族及正則表達式初識

grep號稱文本處理三劍客之一&#xff0c;雖然說是三劍客中功能最少也是最簡單的&#xff0c;但仍然不能小覷。 grep的全稱為&#xff1a;Global search REgular expression and Print out the line&#xff0c;即&#xff1a;全面查找正則表達式并將匹配的行顯示出來。 那么這…

Ubuntu16.04換源

Ubuntu16.04換源 轉載于:https://www.cnblogs.com/xielisen/p/6404607.html