使用的版本
版本: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。