日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java生成Json文件

發布時間:2025/5/22 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java生成Json文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 使用工具
  • 使用說明
          • Website.java
          • JsonFormatTool.java
          • CreateFileUtil.java
          • Main.java
          • pom.xml
  • 效果展示

轉載: http://vvcat.tcode.top:78/details/22

使用工具

IDEA2018.2 JDK1.8

使用說明

JSONObject內部是用Hashmap來存儲的,所以輸出是按key的ASCII碼排序來的,如果要讓JSONObject按固定順序(put的順序)排列,可以修改JSONObject的定義HashMap改為LinkedHashMap。
下面代碼不需要固定順序,所以采用HashMap

Website.java
/*** @Author ??VVcat??* @Date 2019/12/8 23:44* @Version 1.0**/ public class Website {private String name;private String href;private String desc;private String logo;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getHref() {return href;}public void setHref(String href) {this.href = href;}public String getDesc() {return desc;}public void setDesc(String desc) {this.desc = desc;}public String getLogo() {return logo;}public void setLogo(String logo) {this.logo = logo;}public Website(String name, String href, String desc, String logo) {this.name = name;this.href = href;this.desc = desc;this.logo = logo;}public Website() {} }
JsonFormatTool.java
import net.sf.json.JSONArray;import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.Writer;/*** @Author ??VVcat??* @Date 2019/12/8 13:38* @Version 1.0**/ 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();}}
CreateFileUtil.java
mport java.io.File; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.io.Writer;/*** @Author ??VVcat??* @Date 2019/12/8 13:35* @Version 1.0**/ 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;}}
Main.java
import net.sf.json.JSONArray;import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;public class Main {public static void main(String[] args) {List<Website> agencyList1 = new ArrayList<Website>();agencyList1.add(new Website("vvcat博客","http://vvcat.tcode.top:78/","世界很小,請帶著夢想一起奔跑","http://vvcat.tcode.top:78/default/images/favicon.ico"));agencyList1.add(new Website("vvcat博客","http://vvcat.tcode.top:78/","世界很小,請帶著夢想一起奔跑","http://vvcat.tcode.top:78/default/images/favicon.ico"));agencyList1.add(new Website("vvcat博客","http://vvcat.tcode.top:78/","世界很小,請帶著夢想一起奔跑","http://vvcat.tcode.top:78/default/images/favicon.ico"));agencyList1.add(new Website("vvcat博客","http://vvcat.tcode.top:78/","世界很小,請帶著夢想一起奔跑","http://vvcat.tcode.top:78/default/images/favicon.ico"));agencyList1.add(new Website("vvcat博客","http://vvcat.tcode.top:78/","世界很小,請帶著夢想一起奔跑","http://vvcat.tcode.top:78/default/images/favicon.ico"));List<Object> agencyList = new ArrayList<Object>();Map<String, Object> agencyMap = new HashMap<>();agencyMap.put("這是標題1", agencyList1);agencyMap.put("這是標題2", agencyList1);agencyMap.put("這是標題3", agencyList1);agencyMap.put("這是標題4", "這是標題四的內容");agencyMap.put("這是標題5", "這是標題五的內容");agencyList.add(agencyMap);JSONArray jsonObject = JSONArray.fromObject(agencyList);String jsonString1 = jsonObject.toString();// 將以上HashMap中的內容轉成字符串CreateFileUtil.createJsonFile(jsonString1, "/JAVA/Java基礎/vvcat/src/main/resources", "json");} }

CreateFileUtil類的createJsonFile方法
第一個參數為要寫入文件的內容,第二個參數為路徑,第三個參數為文件名
“/JAVA/Java基礎/vvcat/src/main/resources” 這里是絕對路徑,原路徑"E:/JAVA/Java基礎/vvcat/src/main/resources"由于是項目在E盤下的某個文件夾里創建,所以生成時自動生成在E盤下。在這里我省略了E:
“json” 為文件名,生成文件后,會自動生成.json后綴格式的文件

pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>net</groupId><artifactId>vvcat</artifactId><packaging>jar</packaging><version>1.0-SNAPSHOT</version><name>A Camel Route</name><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding></properties><dependencies><dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId><version>1.9.3</version></dependency><dependency><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId><version>3.2.1</version></dependency><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version></dependency><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1.1</version></dependency><dependency><groupId>net.sf.ezmorph</groupId><artifactId>ezmorph</artifactId><version>1.0.6</version></dependency><dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.2.3</version><classifier>jdk15</classifier><!-- jdk版本 --></dependency></dependencies><!-- 如果只是單獨 拿這些代碼測試,不要忘記加以下代碼,否則會報錯--><build><plugins><plugin><artifactId>maven-compiler-plugin</artifactId><version>2.3.2</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins></build></project>

效果展示

[{"這是標題5":"這是標題五的內容","這是標題4":"這是標題四的內容","這是標題3":[{"name":"vvcat博客","logo":"http://vvcat.tcode.top:78/default/images/favicon.ico","href":"http://vvcat.tcode.top:78/","desc":"世界很小,請帶著夢想一起奔跑"},{"name":"vvcat博客","logo":"http://vvcat.tcode.top:78/default/images/favicon.ico","href":"http://vvcat.tcode.top:78/","desc":"世界很小,請帶著夢想一起奔跑"},{"name":"vvcat博客","logo":"http://vvcat.tcode.top:78/default/images/favicon.ico","href":"http://vvcat.tcode.top:78/","desc":"世界很小,請帶著夢想一起奔跑"},{"name":"vvcat博客","logo":"http://vvcat.tcode.top:78/default/images/favicon.ico","href":"http://vvcat.tcode.top:78/","desc":"世界很小,請帶著夢想一起奔跑"},{"name":"vvcat博客","logo":"http://vvcat.tcode.top:78/default/images/favicon.ico","href":"http://vvcat.tcode.top:78/","desc":"世界很小,請帶著夢想一起奔跑"}],"這是標題2":[{"name":"vvcat博客","logo":"http://vvcat.tcode.top:78/default/images/favicon.ico","href":"http://vvcat.tcode.top:78/","desc":"世界很小,請帶著夢想一起奔跑"},{"name":"vvcat博客","logo":"http://vvcat.tcode.top:78/default/images/favicon.ico","href":"http://vvcat.tcode.top:78/","desc":"世界很小,請帶著夢想一起奔跑"},{"name":"vvcat博客","logo":"http://vvcat.tcode.top:78/default/images/favicon.ico","href":"http://vvcat.tcode.top:78/","desc":"世界很小,請帶著夢想一起奔跑"},{"name":"vvcat博客","logo":"http://vvcat.tcode.top:78/default/images/favicon.ico","href":"http://vvcat.tcode.top:78/","desc":"世界很小,請帶著夢想一起奔跑"},{"name":"vvcat博客","logo":"http://vvcat.tcode.top:78/default/images/favicon.ico","href":"http://vvcat.tcode.top:78/","desc":"世界很小,請帶著夢想一起奔跑"}],"這是標題1":[{"name":"vvcat博客","logo":"http://vvcat.tcode.top:78/default/images/favicon.ico","href":"http://vvcat.tcode.top:78/","desc":"世界很小,請帶著夢想一起奔跑"},{"name":"vvcat博客","logo":"http://vvcat.tcode.top:78/default/images/favicon.ico","href":"http://vvcat.tcode.top:78/","desc":"世界很小,請帶著夢想一起奔跑"},{"name":"vvcat博客","logo":"http://vvcat.tcode.top:78/default/images/favicon.ico","href":"http://vvcat.tcode.top:78/","desc":"世界很小,請帶著夢想一起奔跑"},{"name":"vvcat博客","logo":"http://vvcat.tcode.top:78/default/images/favicon.ico","href":"http://vvcat.tcode.top:78/","desc":"世界很小,請帶著夢想一起奔跑"},{"name":"vvcat博客","logo":"http://vvcat.tcode.top:78/default/images/favicon.ico","href":"http://vvcat.tcode.top:78/","desc":"世界很小,請帶著夢想一起奔跑"}]}]

總結

以上是生活随笔為你收集整理的java生成Json文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。