Java读取json文件并对json数据进行读取、修改操作

1.介绍

开发过程中经常会遇到json数据的处理,而单独对json数据进行增删改并不方便,尤其是Geojson文件的处理,通过对网络资料的整理总结,下面介绍Java语言方法对json数据进行读取、添加、删除与修改操作。

2.说明

Java语言操作json对象,需引入json数据操作库(org.json.jar)文件,可通过网络搜索寻找,另外本文附件代码中已包含,在Eclipse或其它编译工具中直接引入即可。

pom 依赖:注意json-lib的属性有时需要加classifier属性,有时可以不用添加。

<dependency>
    <groupId>net.sf.json-lib</groupId>
    <artifactId>json-lib</artifactId>
    <version>2.4</version>
    <classifier>jdk15</classifier>                  //此处要加上jdk版本号
</dependency>

本文通过一个json文件(json.config)为例进行介绍,将key为confKey 的参数替换所其他值。json2.config为修改后的新文件。

3.json样例

[
  {  
    "business":"default",
    "confKey":"b",
    "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]]]  
        }  
    }]  
  },
  {  
    "business":"default",
    "confKey":"b",
    "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、代码

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import java.io.*;

public class JsonConvert {

    /**
     * @param args
     */
    public static void main(String[] args) {

        // 读取原始json文件并进行操作和输出
        try {
            String s1 = readFileByLines("C:\\Users\\admin\\Desktop\\json.config");    // 读取配置文件
            String ws = null;
            BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\Users\\admin\\Desktop\\json2.config"));   // 输出配置文件
            JSONArray dataJson = JSONArray.fromObject(s1);
            for (int i = 0; i < dataJson.size(); i++) {
                JSONObject properties = (JSONObject) dataJson.get(i);
                properties.put("confKey","repalceParams");     //  需要替换的参数
                ws = dataJson.toString();
                System.out.println(ws);
            }
            bw.write(ws);
            bw.flush();
            bw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static String readFileByLines(String fileName) {
        FileInputStream file = null;
        BufferedReader reader = null;
        InputStreamReader inputFileReader = null;
        String content = "";
        String tempString = null;
        try {
            file = new FileInputStream(fileName);
            inputFileReader = new InputStreamReader(file, "utf-8");
            reader = new BufferedReader(inputFileReader);
            // 一次读入一行,直到读入null为文件结束
            while ((tempString = reader.readLine()) != null) {
                content += tempString;
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e1) {
                }
            }
        }
        return content;
    }

}

 

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
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文件。 注意:以上代码仅为示例,具体操作方法和类结构可以根据实际需求进行调整。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值