JSON是什么和用FastJson解析JSON

JSON是什么

JSON(JavaScript Object Notation)是一种轻量级的数据格式,它以“Key-Value”的格式来传输数据对象,JSON 的目的就是为了能替代 XML。相对于XML来说,JSON的占用空间较少,且更加易读。

语法

  • 对象:对象包含于 {} 之间
  • 属性:使用 Key-Value 对表示。属性之间使用逗号分割
  • 对象数组:数组存放于 [] 之间 [elements]
  • 元素:元素之间用逗号分开
  • 值:值可以是字符串、数字、对象、数组、true、false、null(任意类型)
范例 person.json
{
  "person": {
    "id": "123",
    "name": "name",
  },
  "students": [
    "xiaoming",
    "xiaohua",
    "daming"
  ],
  "persons": [
    {
      "id": "1",
      "name": "xiaoming",
    },
    {
      "id": "2",
      "name": "xiaohua",
    },
    {
      "id": "3",
      "name": "daming",
    }
  ]
}

使用FastJson解析JSON文件

JAR包下载地址

使用例

Person类

public class Person{

	private Integer id;
	
	private String name;
	.
	.
	.
	//Getter and Setter
	
	@Override
    public String toString() {
        return "id=" + this.id + "\nname=" + this.name;
    }
}
  1. 读取文件内容
private static char[] content = null;
    @BeforeClass
    public static void beforeClass() throws IOException{
        //读取json文件内容
        File json = new File("src/parseJSON/JSON/person.json");
        System.out.println();
        FileReader reader = new FileReader(json);
        BufferedReader buffReader = new BufferedReader(reader);
        content = new char[(int)json.length()];
        buffReader.read(content);

        //关闭资源
        buffReader.close();
        reader.close();
    }
  1. 解析json中的对象
@Test
public void parseObject(){
        //解析文件内容
        JSONObject jsonObject = JSONObject.parseObject(new String(content));
        //获取json对象
        JSONObject personObject = jsonObject.getJSONObject("person");
        if(personObject != null){
            Person person = new Person();
            //获取json对象中的属性值
            person.setId(personObject.getInteger("id"));
            person.setName(personObject.getString("name"));
            System.out.println(person.toString());
        }
    }

JSONObject对应的是json中的对象类型
JSONObject中的静态方法parseObject用于解析字符串成为一个json对象
JSONObject的getJSONObject方法用于从对象中获取对象

  1. 解析json中的数组
@Test
    public void parseArray(){
        //解析文件内容
        JSONObject jsonObject = JSONObject.parseObject(new String(content));
        //获取Array
        JSONArray jsonArray = jsonObject.getJSONArray("students");
        if(jsonArray != null){
            for(int i = 0; i < jsonArray.size(); i++){
                System.out.println(jsonArray.get(i));
            }
        }
    }

JSONArray对应的是数组类型
JSONObject的getJSONArray方法用于从对象中获取数组

  1. 解析对象数组
	@Test
    public void parseObjectArray(){
        JSONObject jsonObject = JSONObject.parseObject(new String(content));
        //获取对象Array
        JSONArray jsonArray = jsonObject.getJSONArray("persons");
        for(int i = 0; i < jsonArray.size(); i++){
            //解析数组中的对象
            JSONObject item = JSONObject.parseObject(jsonArray.get(i).toString());
            if(item != null){
                Person person = new Person();
                person.setId(item.getInteger("id"));
                person.setName(item.getString("name"));
                System.out.println(person.toString());
            }
        }
    }

基本思路,先获取数组

String
JSONArray
JSONObject
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值