轉載: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樣例
- {
- "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.源代碼下載