Java读取json文件并对json数据进行读取、添加、删除与修改操作

3 篇文章 0 订阅
2 篇文章 0 订阅
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.源代码下载

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



  • 6
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Java可以使用Jackson库来读取json文件并对json数据进行读取添加删除修改操作。 首先,需要导入Jackson库的依赖,可以在Maven或Gradle中添加相应的配置。 读取json文件使用ObjectMapper类的readValue方法,传入json文件路径和对应的Java对象类型即可将json文件内容读取Java对象。 添加操作: 可以将json文件内容读取Java对象,然后对Java对象进行相应的操作,再使用ObjectMapper类的writeValue方法将Java对象写回json文件删除操作: 可以将json文件内容读取Java对象,然后对Java对象进行相应的删除操作,再使用ObjectMapper类的writeValue方法将Java对象写回json文件修改操作: 可以将json文件内容读取Java对象,然后对Java对象进行相应的修改操作,再使用ObjectMapper类的writeValue方法将Java对象写回json文件。 示例代码如下: ```java import com.fasterxml.jackson.databind.ObjectMapper; import java.io.File; import java.io.IOException; public class JsonFileOperation { public static void main(String[] args) { ObjectMapper objectMapper = new ObjectMapper(); try { // 读取json文件 File file = new File("data.json"); // 将json文件内容读取Java对象 Data data = objectMapper.readValue(file, Data.class); // 添加操作 data.addItem("New Item"); // 删除操作 data.removeItem("Item1"); // 修改操作 data.updateItem("Item2", "Updated Item"); // 将Java对象写回json文件 objectMapper.writeValue(file, data); } catch (IOException e) { e.printStackTrace(); } } } class Data { private List<String> items; // getters and setters public void addItem(String item) { items.add(item); } public void removeItem(String item) { items.remove(item); } public void updateItem(String oldItem, String newItem) { int index = items.indexOf(oldItem); items.set(index, newItem); } } ``` 以上代码示例中,Data类是一个简单的包含一个字符串列表的Java类,通过调用Data类的方法来进行添加删除修改操作,并使用ObjectMapper类将修改后的Java对象写回json文件。 注意:以上代码仅为示例,具体操作方法和类结构可以根据实际需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值