转载:http://blog.csdn.net/qing_yun/article/details/46865863#t0
 

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样例

  1. {
  2. "type": "FeatureCollection",
  3. "features": [{
  4. "type": "Feature",
  5. "properties": {
  6. "name": "Yuen Long",
  7. "ID_0": 102,
  8. "ID_1": 18,
  9. "ISO": "HKG"
  10. },
  11. "geometry": {
  12. "type": "Polygon",
  13. "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]]]
  14. }
  15. }]
  16. }

4.代码

  1. package json;
  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.FileReader;
  5. import java.io.FileWriter;
  6. import java.io.IOException;
  7. import java.util.ArrayList;
  8. import org.json.JSONException;
  9. import org.json.JSONObject;
  10. import org.json.JSONArray;
  11. public class JsonConvert {
  12. /**
  13. * @param args
  14. */
  15. public static void main(String[] args) {
  16. // 读取nameID.txt文件中的NAMEID字段(key)对应值(value)并存储
  17. ArrayList<String> list = new ArrayList<String>();
  18. BufferedReader brname;
  19. try {
  20. brname = new BufferedReader(new FileReader("src/json/nameID.txt"));// 读取NAMEID对应值
  21. String sname = null;
  22. while ((sname = brname.readLine()) != null) {
  23. // System.out.println(sname);
  24. list.add(sname);// 将对应value添加到链表存储
  25. }
  26. brname.close();
  27. } catch (IOException e1) {
  28. // TODO Auto-generated catch block
  29. e1.printStackTrace();
  30. }
  31. // 读取原始json文件并进行操作和输出
  32. try {
  33. BufferedReader br = new BufferedReader(new FileReader(
  34. "src/json/HK_geo.json"));// 读取原始json文件
  35. BufferedWriter bw = new BufferedWriter(new FileWriter(
  36. "src/json/HK_new.json"));// 输出新的json文件
  37. String s = null, ws = null;
  38. while ((s = br.readLine()) != null) {
  39. // System.out.println(s);
  40. try {
  41. JSONObject dataJson = new JSONObject(s);// 创建一个包含原始json串的json对象
  42. JSONArray features = dataJson.getJSONArray("features");// 找到features的json数组
  43. for (int i = 0; i < features.length(); i++) {
  44. JSONObject info = features.getJSONObject(i);// 获取features数组的第i个json对象
  45. JSONObject properties = info.getJSONObject("properties");// 找到properties的json对象
  46. String name = properties.getString("name");// 读取properties对象里的name字段值
  47. System.out.println(name);
  48. properties.put("NAMEID", list.get(i));// 添加NAMEID字段
  49. // properties.append("name", list.get(i));
  50. System.out.println(properties.getString("NAMEID"));
  51. properties.remove("ISO");// 删除ISO字段
  52. }
  53. ws = dataJson.toString();
  54. System.out.println(ws);
  55. } catch (JSONException e) {
  56. // TODO Auto-generated catch block
  57. e.printStackTrace();
  58. }
  59. }
  60. bw.write(ws);
  61. // bw.newLine();
  62. bw.flush();
  63. br.close();
  64. bw.close();
  65. } catch (IOException e) {
  66. // TODO Auto-generated catch block
  67. e.printStackTrace();
  68. }
  69. }
  70. }

5.源代码下载

http://download.csdn.net/detail/qing_yun/8895797

Java读取json文件并对json数据进行读取、添加、删除与修改操作的更多相关文章

  1. 【Python】将对象存成json文件及从json取出对象

    常用代码,单拎出来以备查. 对象存json文件: import json obj={'name':'张有财','age':39,'arr':[2,34,5,6,7,88,'李有钱']} with op ...

  2. java读取url中json文件中的json数据

    有时候需要远程从其他接口中获取json数据,如果遇到返回的json数据是一个文件而不直接是数据,那么可以通过以下方法进行读取: /** * 从数据接口获取到数据 * @return * @throws ...

  3. JsonResult序列化并保存json文件 以及对json文件读取反序列

    项目中我们经常遇到一些经常访问的接口,并且更新及时度不是特别高,那么我们可以利用文件来做一些数据请求的缓存. 这里以微信公众号获取粉丝用户列表为例,我们把微信公众号查到的用户先缓存在文件中,这样在翻页 ...

  4. Java中将xml文件转化为json的两种方式

    原文地址https://blog.csdn.net/a532672728/article/details/76312475 最近有个需求,要将xml转json之后存储在redis中,找来找去发现整体来 ...

  5. 从接口自动化测试框架设计到开发(二)操作json文件、重构json工具类

    用例模板里的请求数据多,看起来很乱,所以可以通过访问另外一个文件的方式获取请求数据 把请求数据都放在一个json文件中 取出login的内容: import json fp = open('G:/un ...

  6. python之小应用:读取csv文件并处理01数据串

    目的:读取csv文件内容,把0和1的数据串取出来,统计出现1的连续次数和各次数出现的频率次数 先读取csv文件内容: import csv def csv_read(file): list = [] ...

  7. Redis:Java链接redis单节点千万级别数据 写入,读取 性能测试

    本文是对Redis 单节点,针对不同的数据类型,做插入行测试. 数据总条数为:10058624 环境说明:             Redis 未做任何优化, 单节点    (服务器上, 内存64G) ...

  8. layui文件单文件和多文件的上传、预览以及删除和修改

    活不多说,直接上代码 单文件上传 1.HTML <blockquote class="layui-elem-quote layui-quote-nm" style=" ...

  9. Java读取Excel文件转换成JSON并转成List——(七)

    Jar包

随机推荐

  1. UVa 10129 Play on Words(并查集+欧拉路径)

    题目链接: https://cn.vjudge.net/problem/UVA-10129 Some of the secret doors contain a very interesting wo ...

  2. 分布式理论(一) —— CAP 定理

    目录: 什么是 CAP 定理 为什么只能 3 选 2 能不能解决 3 选 2 的问题 引用 1. 什么是 CAP 定理 2000 年的时候,Eric Brewer 教授提出了 CAP 猜想,2年后,被 ...

  3. .4-浅析webpack源码之convert-argv模块

    上一节看了一眼预编译的总体代码,这一节分析convert-argv模块. 这个模块主要是对命令参数的解析,也是yargs框架的核心用处. 生成默认配置文件名数组 module.exports = fu ...

  4. EF访问数据库报“ExecuteReader 要求已打开且可用的 Connection。连接的当前状态为已关闭。”错误

    我发生这个问题的原因是因为我用EF访问数据库时用的用到了两用方式,如下图 第一种方式访问时不会出现此错误,出现错误的是第二种方式,下图是dal层代码 其中红框中的代码是出现错误之后改正的代码,也就是说 ...

  5. WebForm 【简单控件】【表单元素】

    一.HTML 表单元素复习 (1)文本类 文本框:<input type="text" name="" id="" value=&qu ...

  6. MYSQL查询优化:使用索引

    索引是提高查询速度的最重要的工具.当然还有其它的一些技术可供使用,但是一 般来说引起最大性能差异的都是索引的正确使用.在MySQL邮件列表中,人们经常询问那些让查询运行得更快的方法.在大多数情况下,我 ...

  7. 04-基本的mysql语句

    [转]04-基本的mysql语句 本节课先对mysql的基本语法初体验. 操作文件夹(库) 增 create database db1 charset utf8; 查 # 查看当前创建的数据库 sho ...

  8. jquery插件-fullpage.js

    1⃣️ 简介 fullPage.js 是一个基于 jQuery 的插件,它能够很方便.很轻松的制作出全屏网站,主要功能有: 支持鼠标滚动 支持前进后退和键盘控制 多个回调函数 支持手机.平板触摸事件 ...

  9. Windows7系统如果安装&升级IE11浏览器

    作为一个前端工作人员,IE678简直就是噩梦,还好现在大多数网站已经开始放弃了对IE6/7/8的支持了. 由于Win7系统默认是安装的IE8,所以在打开部分网站时会提示:IE浏览器版本过低.解决方法如 ...

  10. Python笔记(十三):urllib模块

    (一)      URL地址 URL地址组件 URL组件 说明 scheme 网络协议或下载方案 net_loc 服务器所在地(也许含有用户信息) path 使用(/)分割的文件或CGI应用的路径 p ...