Java中Json与Json格式字符串的解析、判断和转换

目录

一、Json的解析

1、JSONObject数据

1 格式

2 构造方式

3 常用方法

2、JSONOArray数据

1 格式

2 构造方式

3 常用方法

二、Json格式字符串

1、json字符串转java对象、list、map


一、Json的解析

1、JSONObject数据

JSONObject继承JSON,JSON中的方法在JSONObject中也存在,不用疑惑使用哪一个。

1 格式

{"key1":value,"key2",value,...},最外层必须为{},不能为[]

key必须是string,value可以是string,也可以是其他任意数据结构。

2 构造方式

1.创建空JSONObject,通过put()添加数据

import com.alibaba.fastjson.JSONObject;
public class demo {
    public static void main(String[] args) {
        JSONObject jsonObject1 = new JSONObject();
        jsonObject1.put("name","花");
        jsonObject1.put("age","23");
        System.out.println("jsonObject1=" + jsonObject1);
        System.out.println("jsonObject1-name=" + jsonObject1.get("name"));

    }
}

2.通过map生成JSONObject

import com.alibaba.fastjson.JSONObject;
import java.util.HashMap;

public class demo {
    public static void main(String[] args) {
        //通过map生成JSONObject
        HashMap map = new HashMap<>();
        map.put("name", "雨");
        map.put("age", 23);
        JSONObject jsonObject1 = new JSONObject(map);
        System.out.println("jsonObject2-name=" + jsonObject1.get("name"));
    }
}

3.通过实体生成

import com.alibaba.fastjson.JSONObject;

public class demo {
    public static void main(String[] args) {
        TestClass testClass = new TestClass();
        testClass.setAge("23");
        testClass.setName("竹");
        //生成json格式
        JSONObject json1 = (JSONObject) JSON.toJSON(testClass);
        JSONObject json2 = (JSONObject) JSONObject.toJSON(testClass);
        System.out.println(json1.get("name")+"----------"+ json2.get("name"));
    }
}

4.由json格式字符串生成(字符串格式不符合标准会报错,例如json数组格式字符串)

import com.alibaba.fastjson.JSONObject;

public class demo {
    public static void main(String[] args) {
        String testString = "{\"age\":23,\"name\":\"石\"}";
        //如果字符串格式不符合标准,会报错
        JSONObject jsonObject3 = JSONObject.parseObject(testString);
        System.out.println(jsonObject3);
    }
}

3 常用方法

方法 传参 返回数据类型 用途

put(String key, Object value)
put(String key, JSONObject value)

key,value boolean 增加属性
toString() String 转为字符串
getJSONArray(String key) key JSONArray 获取JSONArray 数组
JSONObject getJSONObject(String key) key JSONObject 获取JSONObject数组
isEmpty(String key) key boolean 判断属性存在且不为空
JSONObject.parseObject(String str) json格式字符串 JSONObject 字符串转JSONObject(字符串格式不对会报错,可以用来判断字符串是否符合json格式
JSONObject.parseArray(String str) json列表格式字符串 JSONArray 字符串转JSONArray(字符串格式不对会报错,可以用来判断字符串是否符合json列表格式
JSONObject.parseArray(String str, User.class) json列表格式字符串、java类 Java实体类 字符串转java对象
JSONObject.toJSONString() list、map或实体类 String 将map,list数据转为json格式字符串
JSONObject.parse() Json格式或Json数组格式字符串 Object 将Json格式或Json数组格式字符串转化为Object,可以用来判断字符串格式是否为json或json数组
JSONObject.toJavaObject(jsonOBj,User.class);
 
JSON对象和Java类 Java实体类 以json字符串生成java对象

2、JSONOArray数据

1 格式

[{"key":value},{"key":value},{"key":value},...]

本质是数组

2 构造方式

1.创建空JSONArray,通过add()添加数据

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

public class demo {
    public static void main(String[] args) {
        JSONArray jsonArray = new JSONArray();
        JSONObject jsonObject1 = new JSONObject();
        jsonObject1.put("name", "花");
        JSONObject jsonObject2 = new JSONObject();
        jsonObject2.put("name", "雨");
        jsonArray.add(jsonObject1);
        jsonArray.add(jsonObject2);
        System.out.println(jsonArray);
    }
}

2.对象列表转为JSONArray

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.ArrayList;

public class demo {
    public static void main(String[] args) {
        ArrayList testList = new ArrayList<>();
        TestClass testClass1 = new TestClass();
        testClass1.setAge("20");
        testClass1.setName("花");
        testList.add(testClass1);

        TestClass testClass2 = new TestClass();
        testClass2.setAge("20");
        testClass2.setName("竹");
        testList.add(testClass2);

        //list转json字符串
        String string = JSONObject.toJSON(testList).toString();
        System.out.println(string);

        //json字符串转listJson格式
        JSONArray jsonArray = JSONObject.parseArray(string);

        System.out.println(jsonArray);
    }
}

3.JSONArray格式字符串转为JSONArray

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

public class demo {
    public static void main(String[] args) {
        String string = "[{\"name\":\"花\"},{\"name\":\"雨\"}]";
        JSONArray jsonArray = JSONObject.parseArray(string);
        System.out.println(jsonArray);
    }
}

3 常用方法

传参 返回数据类型 用途

add()

addAll()

Object、集合 boolean 添加数据
JSONArray.parseObject(String str) json格式字符串 JSONObject 字符串转JSONObject(字符串格式不对会报错,可以用来判断字符串是否符合json格式
JSONArray.parseArray(String str) json列表格式字符串 JSONArray 字符串转JSONArray(字符串格式不对会报错,可以用来判断字符串是否符合json列表格式
JSONArray.parse() Json格式或Json数组格式字符串 Object 将Json格式或Json数组格式字符串转化为Object,可以用来判断字符串格式是否为json或json数组
JSONArray.toJavaObject(jsonArray,UserList.class);
 
json字符串和Java列表类 Java列表对象 以json字符串生成java对象

二、Json格式字符串

1、json字符串转java对象、list、map

 1.json字符串转java对象

User user = JSONObject.parseObject(jsonStr, User.class);

2.json字符串转list对象 

List testClasses = JSONObject.parseArray(jsonStr, TestClass.class);

3.json字符串转map对象  

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import java.util.Map;

public class demo {
    public static void main(String[] args) {
        String str = "{\"name\":\"雨\",\"age\":\"20\"}";
        //第一种方式
        Map maps = (Map) JSON.parse(str);
        //第二种方式
        Map mapTypes = JSON.parseObject(str);
        //第三种方式
        Map mapType = JSON.parseObject(str,Map.class);
        //第四种方式
        Map json = (Map) JSONObject.parse(str);
        //第种五方式
        Map mapObj = JSONObject.parseObject(str,Map.class);
        System.out.println(json);
    }
}

你可能感兴趣的:(java,json)