fastjson 使用
首先区分 JAVA对象、JSON对象、JSON字符串
-
JAVA对象:是java类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
-
JSON对象:类似于Key/Value 的形式,写在
{}
中。例如:{"key1":"value","key2":0}
-
JSON字符串:就是一个字符串,一个整体,不截取的话不能使用
JSON对象 var str1 = {"name": 'zhangsan',"sex": "man"}; JSON字符串 var str2 = '{"name": "zhangsan", "sex": "man"}'; //有双引号
JSON对象创建
创建 JSON 对象非常简单,只需使用 JSONObject(fastJson提供的json对象) 和 JSONArray(fastJson提供json数组对象) 对象即可
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.flink.api.common.io.ParseException;
public class JsonTest {
public void whenGenerateJson_thanGenerationCorrect() throws ParseException {
JSONArray jsonArray = new JSONArray();
for (int i = 0; i < 2; i++) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("AGE", 10);
jsonObject.put("FULL NAME", "Doe " + i);
jsonObject.put("DATE OF BIRTH", "2016/12/12 12:12:12");
jsonArray.add(jsonObject);
}
String jsonOutput = jsonArray.toJSONString();
System.out.println(jsonOutput);
}
public static void main(String[] args) {
JsonTest jsonTest = new JsonTest();
jsonTest.whenGenerateJson_thanGenerationCorrect();
}
}
JAVA对象 转为 JSON字符串(序列化)
JSON.toJSONString()
将 Java 对象转换为 JSON 对象:
JavaObject javaobject = new JavaObject();
javaobject.setName("alice");
javaobject.setAge(20);
String jsonstring= JSON.toJSONString(javaobject);
JSON字符串 转为 JAVA对象(反序列化)
JSON.parseObject/JSON.parse
JSON字符串 转为 JSON对象
根据 JSONArray.get(int index)
其中参数表示下标值
JSONArray jsonArray = new JSONArray();
String jsonOutput = jsonArray.toJSONString(); //JSONArray 转化为 JSON字符串
System.out.println(jsonArray.get(1)); //将第一个输出。如果想输出其中的某个值,哪些需要写一个类,定义getter,setter方法
JSONObject js1 = (JSONObject) jsonArray.get(1);
System.out.println(js1.get("AGE")); //输出JSON对象的某个key的value
完整代码
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.flink.api.common.io.ParseException;
public class JsonTest {
public void whenGenerateJson_thanGenerationCorrect() throws ParseException {
JSONArray jsonArray = new JSONArray();
for (int i = 0; i < 2; i++) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("AGE", 10);
jsonObject.put("FULL NAME", "Doe " + i);
jsonObject.put("DATE OF BIRTH", "2022/01/02 12:12:12");
jsonArray.add(jsonObject);
}
String jsonOutput = jsonArray.toJSONString(); //现在jsonOutput是一个字符串了,需要进行切割才能输出其中指定的值
System.out.println(jsonOutput);
/* 源代码
public Object get(int index) {
return this.list.get(index);
}
*/
System.out.println(jsonArray.get(1)); // 将第一个输出。如果想输出其中的某个值,哪些需要写一个类,定义getter,setter方法
System.out.println(getType(jsonArray.get(1)));
JSONObject js1 = (JSONObject) jsonArray.get(1);
System.out.println(js1.get("AGE")); //输出JSON对象的某个key的value
}
public static void main(String[] args) {
JsonTest jsonTest = new JsonTest();
jsonTest.whenGenerateJson_thanGenerationCorrect();
}
public static String getType(Object test) { //自定义的getType,用于返回对象的类型
return test.getClass().getName().toString();
}
}
依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.59</version>
</dependency>