JAVA解析JSON数据文件

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

一、什么是JSON

JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。JSON是Douglas Crockford在2001年开始推广使用的数据格式,在2005年-2006年正式成为主流的数据格式,雅虎和谷歌就在那时候开始广泛地使用JSON格式。

二、JSON数据结构

1、JSON对象
以(key/value)键值对形式存在的无序的jsonObject对象,一个对象以“{”(左花括号)开始,“}”(右花括号)结束。每个“名称/值”之间“:”(冒号);“名称/值”与“名称/值”之间用逗号分隔。
例如:{“AddressEng”:“paris”,“AddressChn”:“巴黎”}
2、JSON数组
有序的value集合,这种形式被称为是jsonArray,数组是值(value)的有序集合。一个数组以“【”(左中括号开始),“】”(右中括号)结束,值之间使用“,”(逗号)分割。
例如:数组可以包含多个对象
{
“employees”:[{“firstName”:“John”,“lastName”:“Doe”},
{“firstName”:“David”,“lastName”:“James”},
{“firstName”:“curry”,“lastName”:“Stehp”}]
}

ps:jsonObject与jsonArray的最简单的区别方式就是中括号和花括号。

三、解析JSON数据(使用GSON解析)

1、添加GSON依赖包

<dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.5</version></dependency>

2、解析JSONObject
下面是一个jsonObject文件

{"resultcode": "200","reason": "successed!","result": {"sk": {"temp": "24","wind_direction": "西南风","wind_strength": "2级","humidity": "51%","time": "10:11"},"today": {"temperature": "16℃~27℃","weather": "阴转多云","weather_id": {"fa": "02","fb": "01"},"wind": "西南风3-4 级","week": "星期四","city": "滨州","date_y": "2015年06月04日","dressing_index": "舒适","dressing_advice": "建议着长袖T恤、衬衫加单裤等服装。年老体弱者宜着针织长袖衬衫、马甲和长裤。","uv_index": "最弱","comfort_index": "","wash_index": "较适宜","travel_index": "","exercise_index": "较适宜","drying_index": ""},"future": [{"temperature": "16℃~27℃","weather": "阴转多云","weather_id": {"fa": "02","fb": "01"},"wind": "西南风3-4 级","week": "星期四","date": "20150604"},{"temperature": "20℃~32℃","weather": "多云转晴","weather_id": {"fa": "01","fb": "00"},"wind": "西风3-4 级","week": "星期五","date": "20150605"},{"temperature": "23℃~35℃","weather": "多云转阴","weather_id": {"fa": "01","fb": "02"},"wind": "西南风3-4 级","week": "星期六","date": "20150606"},{"temperature": "20℃~33℃","weather": "多云","weather_id": {"fa": "01","fb": "01"},"wind": "北风微风","week": "星期日","date": "20150607"},{"temperature": "22℃~34℃","weather": "多云","weather_id": {"fa": "01","fb": "01"},"wind": "西南风3-4 级","week": "星期一","date": "20150608"},{"temperature": "22℃~33℃","weather": "阴","weather_id": {"fa": "02","fb": "02"},"wind": "西南风3-4 级","week": "星期二","date": "20150609"},{"temperature": "22℃~33℃","weather": "多云","weather_id": {"fa": "01","fb": "01"},"wind": "南风3-4 级","week": "星期三","date": "20150610"}]},"error_code": 0
}

解析过程:

package cn.edu.bzu.json;import java.io.FileNotFoundException;
import java.io.FileReader;import com.google.gson.JsonArray;
import com.google.gson.JsonIOException;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.JsonSyntaxException;public class Read {public static void main(String args[]){JsonParser parse =new JsonParser();  //创建json解析器try {JsonObject json=(JsonObject) parse.parse(new FileReader("weather.json"));  //创建jsonObject对象System.out.println("resultcode:"+json.get("resultcode").getAsInt());  //将json数据转为为int型的数据System.out.println("reason:"+json.get("reason").getAsString());     //将json数据转为为String型的数据JsonObject result=json.get("result").getAsJsonObject();JsonObject today=result.get("today").getAsJsonObject();System.out.println("temperature:"+today.get("temperature").getAsString());System.out.println("weather:"+today.get("weather").getAsString());} catch (JsonIOException e) {e.printStackTrace();} catch (JsonSyntaxException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();}}
}

输出结果:

resultcode:200
reason:successed!
temperature:16~27℃
weather:阴转多云

3、解析JSONArray数据
下面是json文件

{"cat":"it","language":[{"id":1,"ide":"eclipse","name":Java},{"id":2,"ide":"XCode","name":"Swift"},{"id":3,"ide":"Visual Stdio","name":"C#"}     ],"pop":true
}

解析过程

package cn.edu.bzu.json;import java.io.FileNotFoundException;
import java.io.FileReader;import com.google.gson.JsonArray;
import com.google.gson.JsonIOException;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.JsonSyntaxException;public class ReadJSON {public static void main(String args[]){try {JsonParser parser=new JsonParser();  //创建JSON解析器JsonObject object=(JsonObject) parser.parse(new FileReader("test.json"));  //创建JsonObject对象System.out.println("cat="+object.get("cat").getAsString()); //将json数据转为为String型的数据System.out.println("pop="+object.get("pop").getAsBoolean()); //将json数据转为为boolean型的数据JsonArray array=object.get("language").getAsJsonArray();    //得到为json的数组for(int i=0;i<array.size();i++){System.out.println("---------------");JsonObject subObject=array.get(i).getAsJsonObject();System.out.println("id="+subObject.get("id").getAsInt());System.out.println("name="+subObject.get("name").getAsString());System.out.println("ide="+subObject.get("ide").getAsString());}} catch (JsonIOException e) {e.printStackTrace();} catch (JsonSyntaxException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();}}
}

输出结果:

cat=it
pop=true
---------------
id=1
name=Java
ide=eclips
---------------
id=2
name=Swift
ide=XCode
---------------
id=3
name=C#
ide=Visual Stdio

ps:以上就是java解析json数据的方法,我们将需要的字段取出来之后写入实体类中,最后再调用mapper的insert方法就能将数据写入数据库。如下图所示:

最后通过Test类去调用该方法:

总结几点:解析json数据时,
1.导入GSON依赖包
2.需要进行创建Gson解析器
3.创建JSONObject对象
4.将json数据转为为相应的数据

大公告成,希望对大家有所帮助!

如何使用java解析json文件并将其写入数据库相关推荐

  1. java解析json文件并保存到mysql数据库

    一.数据是从"聚合数据"这个网站获取的,点我下载json文件,访问相应的地址,就返回很长的json格式的数据.因为不太了解json数据格式,我自己另外加了双引号(其实值的部分可以是 ...

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

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

  3. Java解析JSON文件

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

  4. Java解析json文件,转换成JSONObject

    如下图,现有data.json文件,如何进行转换,方便程序处理? 转换成JSONObject: @Test void contextLoads() {String path = "/stat ...

  5. 将json文件里面的数据写入数据库

    {"title_": "需要电脑/招视频剪辑学徒>18岁", "area_": " 不限区域", "vi ...

  6. Java读取Excel文件并将之写入数据库操作

    一.添加需要的包依赖 <!--读取excel文件所需要的包--> <dependency><groupId>org.apache.poi</groupId&g ...

  7. js将数据存储到mysql_使用java读取js文件,将数据写入数据库

    packagecn.itcast.day04.test;/**参数说明:java -jar InsertData.jar 数据库url 表名 文件路径 是否再插入前删除 该方法存在的问题是,读入本地数 ...

  8. Java性能优化:正确的解析JSON文件

    为什么80%的码农都做不了架构师?>>>    数据收集服务平均1小时OOM(java.lang.OutOfMemoryError: GC overhead limit exceed ...

  9. Ajax解析JSON文件

    Ajax解析后台来json文件,是用jQuery方式实现的.依赖jQuery库. jQuery库 Coding coming- 需求:从后台发送学生的json对象,输出到前台,依赖Java解析json ...

最新文章

  1. 山寨动力第一篇:明明白白给MK808山寨电视棒安装PicUntu Linux
  2. FPGA的设计艺术(8)最佳的FPGA开发实践之严格遵循过程
  3. 数据仓库专题(23):总线矩阵的另类应用-Drill Down into a More Detailed Bus Matrix
  4. border-collapse:collapse;清除表格中单元格的空隙
  5. HDU 3068 最长回文
  6. 实验 2 关键字驱动测试(2 学时)实验报告--软件功能测试与性能测试实验
  7. CF1156D 0-1-Tree(换根DP)
  8. 字符串得结果!Java数组模拟栈以实现中缀表达式综合计算器,字符串表达式计算器
  9. HDU-2570-迷瘴
  10. mysql 动态插入日期_mysql 如何动态传入一个时间得到此时间的某个时间点
  11. primefaces教程_Primefaces仪表板组件示例教程
  12. 实训-利用HTML+CSS做响应式项目网页
  13. vs哪个版本比较好用_哪个跨境电商erp比较好用,跨境电商erp哪个好一点
  14. arduino nano 蓝牙_初学者适用!基于Arduino开发板控制SG90伺服电机方案
  15. 学NTFS格式磁盘解析及atapi磁盘读写
  16. xnb转png_xnb exporter插件下载
  17. html+css网页开发 之 头部导航条(logo、导航栏、搜索框)
  18. F12解决网页不能复制
  19. JS中国标准时间格式转换
  20. unixbench测试CPU性能工具/mbw测试内存

热门文章

  1. spark和tez的区别
  2. 【论文笔记】SIFA——基于GAN的双向跨模态无监督域适应框架
  3. 张一鸣:每个逆袭的年轻人,都具备的底层能力
  4. 你也能看懂的:灰色预测算法
  5. 学生评教html模板,关于学校教学计划范文模板
  6. springboot热启动与热部署
  7. OC xcode 两个view重叠,先后层次关系的调整
  8. 【GD32L233C-START】1、初识GD32L233C-START板卡
  9. Android App数据加密
  10. python制作九宫图