1、json数据内容格式化处理

 package com.sklm.lhb.json;

 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();
}
}

JsonFormatTool

2、json数据内容的创建和读取

 package com.sklm.lhb.json;

 import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.OutputStreamWriter;
import java.io.Writer;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser; public class JsonFileUtil { /**
* 生成.json格式文件
* @param jsonString json内容
* @param filePath 文件路径
* @param fileName json文件名称
* @return 如果文件创建成功返回true,否则返回false
*/
public static boolean createJsonFile(String jsonString, String filePath, String fileName) {
boolean flag = true;
String fullPath = filePath +File.separator+ fileName + ".json";
try {
File file = new File(fullPath);
if(!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
if(file.exists()) {
file.delete();
file.createNewFile();
}else {
file.createNewFile();
} //格式化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;
} /**
* 读取json文件
* @param jsonPath 文件路径
* @param jsonName 文件名称
* @return 返回JSONArray,如果发生 异常则返回null
*/
public static JSONArray readJsonToArray(String jsonPath, String jsonName) {
String path = jsonPath+"\\"+jsonName+".json";
try {
JSONParser parse = new JSONParser();
File jsonFile = new File(path);
if(!jsonFile.exists()) {
JsonFileUtil.createJsonFile("[]", jsonPath, jsonName);
}
JSONArray jsonArray = (JSONArray) parse.parse(new FileReader(jsonFile));
return jsonArray;
} catch (Exception e) {
e.printStackTrace();
}
return null;
} /**
* 读取json文件
* @param jsonPath 文件路径
* @param jsonName 文件名称
* @return 返回JSONObject,如果发生 异常则返回null
*/
public static JSONObject readJsonToObject(String jsonPath, String jsonName) {
String path = jsonPath+"\\"+jsonName+".json";
try {
JSONParser parse = new JSONParser();
File jsonFile = new File(path);
if(!jsonFile.exists()) {
JsonFileUtil.createJsonFile("[]", path, jsonName);
}
JSONObject jsonObject = (JSONObject) parse.parse(new FileReader(jsonFile));
return jsonObject;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}

JsonFileUtil

json文件常用代码的更多相关文章

  1. jQuery中读取json文件示例代码

    json文件是一种轻量级的数据交互格式.一般在jquery中使用getJSON()方法读取,具体示例代码如下,感兴趣的朋友可以参考下哈,希望可以帮助到你   json文件是一种轻量级的数据交互格式.一 ...

  2. 使用jsonschema2pojo-maven-plugin 插件根据json文件生成代码

    jsonschema2pojo 是一个不错的工具,可以帮助我们快速的根据json 文件生成pojo代码,提高开发效率,以下为简单的 使用maven 插件进行代码生成 使用maven 插件配置 < ...

  3. 微信小程序app.json文件常用全局配置

    小程序根目录下的 app.json 文件用来对微信小程序进行全局配置,决定页面文件的路径.窗口表现.设置网络超时时间.设置多 tab 等. JOSN文件不允许注释,下面为了学习加上注释,粘贴需要的片段 ...

  4. 处理某个json文件的代码

    # encoding=utf-8 import json,re with open('E:\\weather53892_20114.json','r') as f: data= f.readlines ...

  5. CSS的base文件常用代码

    article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body,but ...

  6. Asp.Net MVC 读取json文件

    有些系统上面的配置可以做成config里面的appsetting.这里要求写在json文件里面. 首先 添加命名空间 using Newtonsoft.Json; using System.IO; u ...

  7. 如何在PIXI.js里面使用json文件来管理瓦片集(tileset)?

    如何在PIXI.js里面使用json文件来管理瓦片集(tileset)? PIXI建议我们将素材图片汇总成一个瓦片集(tileset),然后用纹理地图集(texture atlas,通常是一个json ...

  8. 安卓解析JSON文件

    安卓解析JSON文件 根据JOSN文件的格式,文件只有两种数据,一是对象数据,以 {}为分隔,二是数组,以[]分隔 以下介绍安卓如何解析一个JSON文件,该文件存放在assets目录下,即:asset ...

  9. js 读取外部的本地json文件

    Javascript 读取外部的本地json文件 方案1 运行本地web服务器,提供文件服务 方案2 1.data = '[{"name" : "Ashwin" ...

随机推荐

  1. MD5加密工具类

    简单的md5加密: package com.util; import java.security.MessageDigest; import java.security.NoSuchAlgorithm ...

  2. Android高级工程师面试实战,您会挂么?

    xxx公司面试总结 面试形势 群聊(2个面试官+HR+自己) 面试流程 自我介绍 面试官根据你的介绍开始问 你对我们公司有什么想了解的么(复活卡,要时回到没有了也就没有了,可以让面试官给自己提一下建议 ...

  3. add, subtract, multiply, divide

    加.减.乘.除:add, subtract, multiply, divide

  4. Spring Cloud微服务笔记(三)服务治理:Spring Cloud Eureka快速入门

    服务治理:Spring Cloud Eureka 一.服务治理 服务治理是微服务架构中最为核心和基础的模块,它主要用来实现各个微服务实例的自动化注册与发现. 1.服务注册: 在服务治理框架中,通常会构 ...

  5. Do-Now—团队Scrum 冲刺博客五

    各个成员今日完成的任务 侯泽洋: 每日任务页面编写,任务修改功能 周亚杰:完成个人中心页面设计 王志伟:完成个人中心页面设计 唐才铭:启动动画及引导页与项目合并 项目燃尽图 站立式会议照片 各个成员遇 ...

  6. STL中的二分查找

    本文转载于https://blog.csdn.net/riba2534/article/details/69240450 使用的时候注意:必须用在非递减的区间中 二分查找的原理非常简单,但写出的代码中 ...

  7. jdbc连接oracle时报错 Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableC

    错误: Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; ...

  8. 19.3.25 sql查询语句

    1.单表查询:select * from 表名 where id = 111 2.查询表内数据并以id排序:select * from 表名 order by id (降序:desc/升序:asc) ...

  9. Html转义字符列表

    Symbol Code Entity Name ™ ™   €   € Space   ! !   " " " # #   $ $   % %   & & ...

  10. onu-reg-unreg.vbs

    Sub Main crt.Sleep 10000 Dim cnt For cnt = 0 To 1000000 crt.screen.Send "admin-status down" ...