使用org.json.JSONObject的方法进行读写Json文件

使用的版本

版本:20210307
下载jar包:json-20210307.jar

用到的主要方法

JSONTokener的方法

public JSONTokener(InputStream inputStream) 使用输入流创建JSONTokener

JSONObject的方法

public JSONObject(JSONTokener x) throws JSONException 使用JSonTokener对象创建JSONObject对象
public Writer write(Writer writer, int indentFactor, int indent) throws JSONException 向Writer对象中写入数据,并根据indentFactor(缩进因子)和indent来调整写入格式。

举例

import org.json.JSONArray;
import org.json.JSONObject;
import org.json.JSONTokener;

import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.Writer;
import java.util.Arrays;

public class Test {

    public static void main(String[] args) throws Exception {
        JSONTokener jsonTokener = new JSONTokener(new FileInputStream(
                "data.json"));
        JSONObject jsonObject = new JSONObject(jsonTokener);
        System.out.println(jsonObject);

		// 添加一些信息
        jsonObject.put("category", "apple");
        jsonObject.put("price", 5.5);
        
        JSONObject otherInfo = new JSONObject();
        otherInfo.put("k1", "v1");
        otherInfo.put("k2", "v2");
        jsonObject.put("kv", otherInfo);
        
        JSONArray jsonArray = new JSONArray();
        jsonArray.putAll(Arrays.asList(1, 2, 3));
        jsonObject.put("array", jsonArray);
        
        // 向文件中写入,缩进因子设置为4,缩进为0
        Writer write = jsonObject.write(new FileWriter("test.json"),
                4, 0);
        // 写入后及时关闭文件
        write.close();
    }
    
}

data.json文件如下:

{
  "filename":"data.json"
}

test.json文件如下:

{
    "filename": "data.json",
    "array": [
        1,
        2,
        3
    ],
    "price": 5.5,
    "kv": {
        "k1": "v1",
        "k2": "v2"
    },
    "category": "apple"
}

在文件写入时,可以通过缩进因子来控制输出格式,这里记起始层为0层,那么有缩进长度=缩进因子*层数+缩进值。就上例中,当索引因子为4,缩进为0时,那么每层长度会增加4。
我们可以更改缩进参数来做个比较,这里将缩进值更改为2。

Writer write = jsonObject.write(new FileWriter("test.json"), 4, 2);

更改后的test.json文件如下:

{
      "filename": "data.json",
      "array": [
          1,
          2,
          3
      ],
      "price": 5.5,
      "kv": {
          "k1": "v1",
          "k2": "v2"
      },
      "category": "apple"
  }

会发现,第1层缩进长度变为了6,第2层缩进长度变为了10,第0层的右大括号缩进长度为2。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值