Java读取json文件并对json数据进行读取、添加、删除与修改操作
1.介绍
开发过程中经常会遇到json数据的处理,而单独对json数据进行增删改并不方便,尤其是Geojson文件的处理,通过对网络资料的整理总结,下面介绍Java语言方法对json数据进行读取、添加、删除与修改操作。
2.说明
Java语言操作json对象,需引入json数据操作库(org.json.jar)文件,可通过网络搜索寻找,另外本文附件代码中已包含,在Eclipse或其它编译工具中直接引入即可。
本文通过一个Geojson文件(HK_geo.json)为例进行介绍,nameID.txt为新json新添加字段(key)所对应的值(value)。HK_new.json为修改后的新文件。
3.json样例
- {
- "type": "FeatureCollection",
- "features": [{
- "type": "Feature",
- "properties": {
- "name": "Yuen Long",
- "ID_0": 102,
- "ID_1": 18,
- "ISO": "HKG"
- },
- "geometry": {
- "type": "Polygon",
- "coordinates": [[[114.084511, 22.519991], [114.075668, 22.517466], [114.078194, 22.516203], [114.079460, 22.516623], [114.082825, 22.519150], [114.084511, 22.519991]]]
- }
- }]
- }
4.代码
- package json;
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.FileReader;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.util.ArrayList;
- import org.json.JSONException;
- import org.json.JSONObject;
- import org.json.JSONArray;
- public class JsonConvert {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // 读取nameID.txt文件中的NAMEID字段(key)对应值(value)并存储
- ArrayList<String> list = new ArrayList<String>();
- BufferedReader brname;
- try {
- brname = new BufferedReader(new FileReader("src/json/nameID.txt"));// 读取NAMEID对应值
- String sname = null;
- while ((sname = brname.readLine()) != null) {
- // System.out.println(sname);
- list.add(sname);// 将对应value添加到链表存储
- }
- brname.close();
- } catch (IOException e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
- // 读取原始json文件并进行操作和输出
- try {
- BufferedReader br = new BufferedReader(new FileReader(
- "src/json/HK_geo.json"));// 读取原始json文件
- BufferedWriter bw = new BufferedWriter(new FileWriter(
- "src/json/HK_new.json"));// 输出新的json文件
- String s = null, ws = null;
- while ((s = br.readLine()) != null) {
- // System.out.println(s);
- try {
- JSONObject dataJson = new JSONObject(s);// 创建一个包含原始json串的json对象
- JSONArray features = dataJson.getJSONArray("features");// 找到features的json数组
- for (int i = 0; i < features.length(); i++) {
- JSONObject info = features.getJSONObject(i);// 获取features数组的第i个json对象
- JSONObject properties = info.getJSONObject("properties");// 找到properties的json对象
- String name = properties.getString("name");// 读取properties对象里的name字段值
- System.out.println(name);
- properties.put("NAMEID", list.get(i));// 添加NAMEID字段
- // properties.append("name", list.get(i));
- System.out.println(properties.getString("NAMEID"));
- properties.remove("ISO");// 删除ISO字段
- }
- ws = dataJson.toString();
- System.out.println(ws);
- } catch (JSONException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- bw.write(ws);
- // bw.newLine();
- bw.flush();
- br.close();
- bw.close();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
5.源代码下载
Java读取json文件并对json数据进行读取、添加、删除与修改操作的更多相关文章
- 【Python】将对象存成json文件及从json取出对象
常用代码,单拎出来以备查. 对象存json文件: import json obj={'name':'张有财','age':39,'arr':[2,34,5,6,7,88,'李有钱']} with op ...
- java读取url中json文件中的json数据
有时候需要远程从其他接口中获取json数据,如果遇到返回的json数据是一个文件而不直接是数据,那么可以通过以下方法进行读取: /** * 从数据接口获取到数据 * @return * @throws ...
- JsonResult序列化并保存json文件 以及对json文件读取反序列
项目中我们经常遇到一些经常访问的接口,并且更新及时度不是特别高,那么我们可以利用文件来做一些数据请求的缓存. 这里以微信公众号获取粉丝用户列表为例,我们把微信公众号查到的用户先缓存在文件中,这样在翻页 ...
- Java中将xml文件转化为json的两种方式
原文地址https://blog.csdn.net/a532672728/article/details/76312475 最近有个需求,要将xml转json之后存储在redis中,找来找去发现整体来 ...
- 从接口自动化测试框架设计到开发(二)操作json文件、重构json工具类
用例模板里的请求数据多,看起来很乱,所以可以通过访问另外一个文件的方式获取请求数据 把请求数据都放在一个json文件中 取出login的内容: import json fp = open('G:/un ...
- python之小应用:读取csv文件并处理01数据串
目的:读取csv文件内容,把0和1的数据串取出来,统计出现1的连续次数和各次数出现的频率次数 先读取csv文件内容: import csv def csv_read(file): list = [] ...
- Redis:Java链接redis单节点千万级别数据 写入,读取 性能测试
本文是对Redis 单节点,针对不同的数据类型,做插入行测试. 数据总条数为:10058624 环境说明: Redis 未做任何优化, 单节点 (服务器上, 内存64G) ...
- layui文件单文件和多文件的上传、预览以及删除和修改
活不多说,直接上代码 单文件上传 1.HTML <blockquote class="layui-elem-quote layui-quote-nm" style=" ...
- Java读取Excel文件转换成JSON并转成List——(七)
Jar包
随机推荐
- PHP面向对象——类
<?php/** * Created by PhpStorm. * User: 63448 * Date: 2018/5/6 * Time: 9:44 *///类:相似的数据和数据操作的封装 c ...
- [总结]多项式类数学相关(定理&证明&板子)
目录 写在前面 前置技能 多项式相关 多项式的系数表示 多项式的点值表示 复数相关 复数的意义 复数的基本运算 单位根 代码相关 多项式乘法 快速傅里叶变换 DFT IDFT 算法实现 递归实现 迭代 ...
- HTML 常用小技巧 【标题图标】【锚点】【插入音乐,视频】【滚动效果】【嵌入网页】
一 在原页面嵌入其他页面 使用iframe框架 < iframe >------ < / iframe > <iframe src="要放在框架里面的网址或文 ...
- ELK环境搭建完整说明
ELK环境搭建完整说明 ELK:ElasticSerach.Logstash.Kibana三款产品名称的首字母集合,用于日志的搜集和搜索.简单地理解为我们可以把服务端的日志(nginx.tomcat等 ...
- 【转】SAP HANA学习资料大全[非常完善的学习资料汇总]
Check out this SDN blog if you plan to write HANA Certification exam http://scn.sap.com/community/ha ...
- Oracle TO_DATE() 函数格式化时间【全】
TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年 显 ...
- IDEA Tomcat Web项目修改了代码,重新部署页面没改变
今天被IDEA坑的不浅直接说一下问题: 这是html页面不管我怎么修改重启服务器在浏览器中还是一点都不变化,甚至把一些内容都删了都没有变化,target可执行文件是最新的没问题,找了点资料发现是浏览器 ...
- Oracle 临时表创建及删除
Oracle临时表 临时表分为两种 会话级别(ON COMMIT PRESERVE ROWS;) CREATE GLOBAL TEMPORARY <TABLE_NAME> ( <co ...
- 使用ECharts画K线图
需引入echarts.js插件,开发环境建议选择源代码版本,该版本包含了常见的警告和错误提示.下载地址 http://echarts.baidu.com/download.html 下面是代码,注释很 ...
- HDU5036 Explosion(期望 bitset)
题意 题目链接 Sol 和cf上的一道题几乎一摸一样 首先根据期望的线性性,可以转化为求每个点的期望打开次数,又因为每个点最多会被打开一次,只要算每个点被打开的概率就行了 设\(anc[i]\)表示\ ...