zoukankan      html  css  js  c++  java
  • Java读取json文件并对json数据进行读取、添加、删除与修改操作

     

    转载: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样例

    [javascript] view plain copy
     
    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.代码

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

    5.源代码下载

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

  • 相关阅读:
    iOS TTF文件改变字体
    iOS CoreAnimation 核心动画
    iOS no visible @interface for 'UIButton' declares the selector errors
    iOS 如何通过CocoaPods添加第三方框架
    iOS AVAudioPlayer播放音乐
    iOS 一些常用代码的总结
    iOS 基础
    qworker 实例
    delphi RTTI 反射技术
    delphi IOUtils单元 处理文件路径相关
  • 原文地址:https://www.cnblogs.com/runerering/p/6037751.html
Copyright © 2011-2022 走看看