json文件常用代码
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文件常用代码的更多相关文章
- jQuery中读取json文件示例代码
json文件是一种轻量级的数据交互格式.一般在jquery中使用getJSON()方法读取,具体示例代码如下,感兴趣的朋友可以参考下哈,希望可以帮助到你 json文件是一种轻量级的数据交互格式.一 ...
- 使用jsonschema2pojo-maven-plugin 插件根据json文件生成代码
jsonschema2pojo 是一个不错的工具,可以帮助我们快速的根据json 文件生成pojo代码,提高开发效率,以下为简单的 使用maven 插件进行代码生成 使用maven 插件配置 < ...
- 微信小程序app.json文件常用全局配置
小程序根目录下的 app.json 文件用来对微信小程序进行全局配置,决定页面文件的路径.窗口表现.设置网络超时时间.设置多 tab 等. JOSN文件不允许注释,下面为了学习加上注释,粘贴需要的片段 ...
- 处理某个json文件的代码
# encoding=utf-8 import json,re with open('E:\\weather53892_20114.json','r') as f: data= f.readlines ...
- CSS的base文件常用代码
article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body,but ...
- Asp.Net MVC 读取json文件
有些系统上面的配置可以做成config里面的appsetting.这里要求写在json文件里面. 首先 添加命名空间 using Newtonsoft.Json; using System.IO; u ...
- 如何在PIXI.js里面使用json文件来管理瓦片集(tileset)?
如何在PIXI.js里面使用json文件来管理瓦片集(tileset)? PIXI建议我们将素材图片汇总成一个瓦片集(tileset),然后用纹理地图集(texture atlas,通常是一个json ...
- 安卓解析JSON文件
安卓解析JSON文件 根据JOSN文件的格式,文件只有两种数据,一是对象数据,以 {}为分隔,二是数组,以[]分隔 以下介绍安卓如何解析一个JSON文件,该文件存放在assets目录下,即:asset ...
- js 读取外部的本地json文件
Javascript 读取外部的本地json文件 方案1 运行本地web服务器,提供文件服务 方案2 1.data = '[{"name" : "Ashwin" ...
随机推荐
- 使用Ncat反弹Shell
ncat -l -n -v -p ncat -e /bin/ ncat -e C:\Windows\system32\cmd.exe
- LeetCode题解 | 215. 数组中的第K个最大元素
在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 ...
- Android 调用 .NET WebService
1.下载并导入jar工具类包 打开下载界面http://simpligility.github.io/ksoap2-android/getting-started.html ,拉倒最下 2.Copy ...
- [jzoj]2505.【NOIP2011模拟7.29】藤原妹红
Link https://jzoj.net/senior/#main/show/2505 Description 在幻想乡,藤原妹红是拥有不老不死能力的人类.虽然不喜欢与人们交流,妹红仍然保护着误入迷 ...
- 使用gitflow流程完成功能时报错
报错 fatal: could not read Username for 'https://github.com': ······ 原因 使用https方式的时候 在https url 里面没有用户 ...
- 做rl_abs过程中遇到的问题
问题一 运行 train_abstractor.py就出现这个问题 nohup: ignoring input start training with the following hyper-para ...
- 从构建分布式秒杀系统聊聊Lock锁使用中的坑
前言 在单体架构的秒杀活动中,为了减轻DB层的压力,这里我们采用了Lock锁来实现秒杀用户排队抢购.然而很不幸的是尽管使用了锁,但是测试过程中仍然会超卖,执行了N多次发现依然有问题.输出一下代码吧,可 ...
- 转摘: MySQL详解--锁
原文 http://blog.csdn.net/xifeijian/article/details/20313977 InnoDB锁问题 InnoDB与MyISAM的最大不同有两点:一是支持事务(TR ...
- HTML入门5
格式化文本,高阶处理,接下来了解,标记引文,描述列表,计算机代码和其他文本,上下标,联系信息等数据. 学习不太知名的HTML元素来标记高级语义特征. 描述列表,也叫自定义列表,第三种类型的列表,除了u ...
- Node.js_简介及其 npm 包管理器基本使用_npm_cnpm_yarn_cyarn
Node.js 既是语言也是平台,跳过了 Apache.Nginx 等 HTTP 服务器,直接面向前端开发 JavaScript 是由 ECMAScript.文档对象模型(DOM)和浏览器对象模型(B ...