一、概述
請(qǐng)根據(jù)具體需求具體改動(dòng),此代碼需要將前端的數(shù)據(jù)查詢出來,然后進(jìn)行json字符串的轉(zhuǎn)化
.getCatalogId(id)方法是根據(jù)id查出來的內(nèi)容然后再進(jìn)行轉(zhuǎn)換成json字符串
也可以直接傳入json字符串進(jìn)行測(cè)試
二、代碼?
@ApiOperation("導(dǎo)出為json文件")
@PostMapping("/export")
@DisableEncryptResponse
public R<String> export(@RequestBody Long id) {
R<Object> list = scenarioService.getCatalogId(id);
String jsonString = JSON.toJSONString(list);
String filePath = "D:\\temp";
String fileName = "test";
String fullPath = filePath + File.separator + fileName + ".json";
//例如:fullPath="D:/temp/test.json"
String address = fileName + ".json";
// 生成json格式文件
try {
// 保證創(chuàng)建一個(gè)新文件
File file = new File(fullPath);
if (!file.getParentFile().exists()) { // 如果父目錄不存在,創(chuàng)建父目錄
file.getParentFile().mkdirs();
}
if (file.exists()) { // 如果已存在,刪除舊文件
file.delete();
}
file.createNewFile();
// 格式化json字符串
jsonString = formatJson(jsonString);
// 將格式化后的字符串寫入文件
Writer write = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
write.write(jsonString);
write.flush();
write.close();
} catch (Exception e) {
e.printStackTrace();
}
return R.ok(address);
}
package com.dbm.flowconfig.util;
public class json {
/**
* 單位縮進(jìn)字符串。
*/
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、獲取當(dāng)前字符。
key = json.charAt(i);
// 2、如果當(dāng)前字符是前方括號(hào)、前花括號(hào)做如下處理:
if ((key == '[') || (key == '{')) {
// (1)如果前面還有字符,并且字符為“:”,打?。簱Q行和縮進(jìn)字符字符串。
if ((i - 1 > 0) && (json.charAt(i - 1) == ':')) {
result.append('\n');
result.append(indent(number));
}
// (2)打?。寒?dāng)前字符。
result.append(key);
// (3)前方括號(hào)、前花括號(hào),的后面必須換行。打?。簱Q行。
result.append('\n');
// (4)每出現(xiàn)一次前方括號(hào)、前花括號(hào);縮進(jìn)次數(shù)增加一次。打?。盒滦锌s進(jìn)。
number++;
result.append(indent(number));
// (5)進(jìn)行下一次循環(huán)。
continue;
}
// 3、如果當(dāng)前字符是后方括號(hào)、后花括號(hào)做如下處理:
if ((key == ']') || (key == '}')) {
// (1)后方括號(hào)、后花括號(hào),的前面必須換行。打?。簱Q行。
result.append('\n');
// (2)每出現(xiàn)一次后方括號(hào)、后花括號(hào);縮進(jìn)次數(shù)減少一次。打?。嚎s進(jìn)。
number--;
result.append(indent(number));
// (3)打?。寒?dāng)前字符。
result.append(key);
// (4)如果當(dāng)前字符后面還有字符,并且字符不為“,”,打?。簱Q行。
if (((i + 1) < length) && (json.charAt(i + 1) != ',')) {
result.append('\n');
}
// (5)繼續(xù)下一次循環(huán)。
continue;
}
// 4、如果當(dāng)前字符是逗號(hào)。逗號(hào)后面換行,并縮進(jìn),不改變縮進(jìn)次數(shù)。
if ((key == ',')) {
result.append(key);
result.append('\n');
result.append(indent(number));
continue;
}
// 5、打?。寒?dāng)前字符。
result.append(key);
}
return result.toString();
}
/**
* 返回指定次數(shù)的縮進(jìn)字符串。每一次縮進(jìn)三個(gè)空格,即SPACE。
*
* @param number 縮進(jìn)次數(shù)。
* @return 指定縮進(jìn)次數(shù)的字符串。
*/
private static String indent(int number) {
StringBuffer result = new StringBuffer();
for (int i = 0; i < number; i++) {
result.append(SPACE);
}
return result.toString();
}
}
三、使用postman進(jìn)行測(cè)試
導(dǎo)出的文件在D盤temp文件夾下面
下面為json格式樣例
{
????"teacher":?[
????????{
????????????"id":?"001",
????????????"name":?"張三"
????????},
????????{
????????????"id":?"002",
????????????"name":?"李四"
????????}
????],
????"student":?[
????????{
????????????"id":?"101",
????????????"name":?"王五"
????????}
????]
}
?四、使用nginx下載json文件
前端想要獲取你的json文件,你可以通過配置nginx然后發(fā)送給前端下載網(wǎng)址,在網(wǎng)址中進(jìn)行下載
?右擊nginx.conf,使用notepad++打開,配置下載地址,配置好后,下載地址為?http://你的IP地址/download/test.json
?
?
?這樣別人就可以通過你提供的鏈接進(jìn)行下載
五、JSON字符串,JSON對(duì)象,JSON數(shù)組,實(shí)體類轉(zhuǎn)換文章來源:http://www.zghlxwxcb.cn/news/detail-742466.html
http://t.csdn.cn/FS7ev?文章來源地址http://www.zghlxwxcb.cn/news/detail-742466.html
到了這里,關(guān)于Java中將json字符串導(dǎo)出為json文件【詳細(xì)步驟】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!