本人对于java的语法不是很熟,算是半路突然入坑这种,之前实现过python生成json文件并导出.json文件;

怎料java的语法有些出入,现整理做个笔记;

推荐个Json格式化工具:json格式化工具

首先了解下JSON的基本语法吧:

1.json的四个基本规则
(1)并列的数据之间用逗号' , '分隔
(2)映射用冒号' : '表示
(3)并列数据的集合(数组)用方括号' [ ] '表示
(4)映射的集合(对象)用大括号' { } ' 表示
2.缺点
(1)要求是unicode,否则会出现乱码
(2)语法过于严禁,必须遵循json语法四个原则
3.
(1)数据结构:object、array
(2)基本类型:string、number、true、false、null
(3)key必须是String类型的,value是任何基本类型或数据结构

以下将针对如下内容示例进行json代码实现并如何导出成一个“.json”文件;

{"name":"张铁柱","age":25,"height":"185.5","school":"清华","major":[{"job1":"worker","job2":"doctor"},{"job3":"teacher","job4":"student"}],"houseLocation":{"x":30,"y":30}
}

代码实现如下:

String fullPath = filePath + File.separator + fileName + ".json";
//例如:fullPath="D:/myroot/test.json"// 生成json格式文件try {// 保证创建一个新文件File file = new File(fullPath);if (!file.getParentFile().exists()) { // 如果父目录不存在,创建父目录file.getParentFile().mkdirs();}if (file.exists()) { // 如果已存在,删除旧文件file.delete();}file.createNewFile();//以下创建json格式内容//创建一个json对象,相当于一个容器JSONObject root =new JSONObject();root.put("name","张铁柱");root.put("age",25)//假设身高是double,我们取小数点后一位double height=185.5345;root.put("height",(double)(Math.round(height*10)/10.0));JSONArray array=new JSONArray();JSONObject major1=new JSONObject();major1.put("job1","worker");major1.put("job2","doctor");JSONObject major2=new JSONObject();major2.put("job3","teacher");major2.put("job4","student");array.put( major1);array.put( major2);root.put("major",array);//假设位置x,y都是double型的,现在对他们取整double x=30.0045;double y=30.1123;JSONObject houloc=new JSONObject();houloc.put("x",Math.round(x));houloc.put("y",Math.round(y));root.put("houseLocation",houloc)// 格式化json字符串jsonString = formatJson(root.toString());// 将格式化后的字符串写入文件Writer write = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");write.write(jsonString);write.flush();write.close();} catch (Exception e) {e.printStackTrace();}

其中会调用到formatJson这个函数,以下就是在同个java文件中定义的该函数以及相关函数:

(以下函数的作用其实就是将json格式的数据进行字符串化且格式上做了美观,要不然输出来的json文件就是一行内容,没有换行,也不对其。建议用notepad查看生产的json文件)

    /*** 单位缩进字符串。*/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();}

参考:

https://blog.csdn.net/muziqin12345/article/details/80265218

https://blog.csdn.net/weixin_42749765/article/details/81533635

https://blog.csdn.net/dearKundy/article/details/79815565

JAVA 实现 json文件的生成与导出相关推荐

  1. 使用maven根据JSON文件自动生成Java POJO类(Java Bean)源文件

    根据JSON文件自动生成Java POJO类(Java Bean)源文件 本文介绍使用程序jsonschema2pojo来自动生成Java的POJO类源文件,本文主要使用maven,其他构建工具请参考 ...

  2. Java 读取 JSON 文件转成 Map 对象

    Java 读取 JSON 文件转成 Map 对象 应用场景 待读取的外部 JSON 文件 Java 代码 读取结果 Gson 应用场景 Jar 包或 War 包引用一个外部文件作为项目运行的配置文件 ...

  3. [torchtext]如何利用torchtext读取json文件并生成batch

    如何利用torchtext读取json文件并生成batch 设置Field 使用torchtext.data.Tabulardataset.splits读取文件 构建vocab表 使用torchtex ...

  4. java读取json文件内容_java读取json文件内容详解

    之前给大家介绍了一下java读取txt文件内容,下面要给大家介绍的就是java读取json文件内容,一起来了解一下吧. 1.java读取json文件 下面是具体的思路: 首先是获取文件-获取文件内容- ...

  5. Java读取Json文件内容

    前言 Java 读取Json文件的内容. pom 依赖 <dependency><groupId>com.alibaba</groupId><artifact ...

  6. 如何使用java解析json文件并将其写入数据库

    JAVA解析JSON数据文件 在使用第三方的api文档时,会得到相应的JSON数据文件,那么我们怎样将JSON文件写入数据库从而测试数据呢?下面我将给大家做一个简单的展示. 一.什么是JSON JSO ...

  7. Java解析JSON文件

    Java解析基于json-simple库,github地址. https://github.com/fangyidong/json-simple 解析是把字符串变为json文件,或者把json文件变成 ...

  8. java解析json文件_Java性能优化:正确的解析JSON文件

    数据收集服务平均1小时OOM(java.lang.OutOfMemoryError: GC overhead limit exceeded)一次,发现都是在下载处理 JSON Atom Feed时OO ...

  9. Java读取json文件,再生产新的json文件

    <!-- 阿里JSON解析器 --><dependency><groupId>com.alibaba</groupId><artifactId&g ...

最新文章

  1. 原来 Excel 只需三步就可以给证件照换底色!
  2. 将C/C++程序的变量数据导入到MATLAB中的方法
  3. Caffe使用step by step:caffe框架下的基本操作和分析
  4. ecshop 删除订单时提示“以下订单无法被移除”的解决办法
  5. Python——七段数码管绘制
  6. 时序分析:手势--空间轨迹模式识别
  7. braintree php 开发,PHP关于Braintree支付
  8. live2d_Live2D | CubismSdkForUnity4r.1简介(下)
  9. 计算机并口地址定义,电脑并口(LPT)引脚定义
  10. JDK的发布周期缩短,JDK9,JDK10是短期版本
  11. 北京航空航天大学经管学院《量化交易与大数据金融》课程实验 :自选至少5支基金,和一个大盘指数,比较这5支基金的信息比率
  12. 服务器上qq邮件不能打开方式,QQ邮箱打不开的处理方法
  13. 用自己电脑搭建外网可访问的服务器
  14. linux转录组分析,完整转录组RNAseq分析流程(tophat2+cufflink+cuffdiff)
  15. 华硕笔记本X450JB拆机及加装固态硬盘
  16. Win11安装 eNSP模拟器
  17. 如何免费下载道客巴巴文档
  18. Linux之 chattr 权限详解
  19. 微信小程序onTabItemTap和onShow的执行顺序
  20. 机械制造作业考研题目答案分享——加工的表面质量

热门文章

  1. 测试工程师如何自我提升
  2. 基于51单片机3轴加速度计ADXL345计步器卡路里系统设计
  3. webstorm前端环境搭建-SMIC
  4. PE结构详解(64位和32位的差别)
  5. 新手学HTML 5移动开发——面向iOS和Android平台 完整pdf扫描版
  6. 轻松学会jQuery选择器的用法
  7. [Win驱动6]Windows驱动之间的同步相互调用
  8. QListwidget设置水平滚动条和竖直滚动条
  9. Hibernate(五)多对多映射关系
  10. 【免费分享】2000-2019 年中国各省、市、区县分年、分月、逐日平均降水量