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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM