package com.zhw.project.domain; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import java.util.ArrayList; import java.util.List; public class TextJson {
//定义内部类用于接收json字符串的java的实体类 static class JsonUser{
private String name; private Integer age; public String getName() {
return name; } public void setName(String name) {
this.name = name; } public Integer getAge() {
return age; } public void setAge(Integer age) {
this.age = age; } } public static void main(String[] args) {
//json字符串各种解析 //定义测试的json字符串 String str = "{\"code\":0,\"data\":{\"name\":\"你好\",\"age\":29}}"; //一,使用fastjson对json字符串进行解析 //1,json简单解析 //将json字符串 json格式化 JSONObject jsonObject = JSON.parseObject(str); //获取json对象中的code Integer code = jsonObject.getInteger("code"); System.out.println("解析简单的json字符串"); System.out.println("code:"+code); //获取data 由于data为json字符串类型 可以直接使用getJSONObject方法 返回一个json格式化后的对象 JSONObject data = jsonObject.getJSONObject("data"); //获取data中的name值 String name = data.getString("name"); Integer age = data.getInteger("age"); //打印 System.out.println("name:"+name+"-"+"age:"+age); //2,使用java对象接收json字符串 //获取data字符串 由于要将字符串转成对象 所以这边使用getString方法 String data1 = jsonObject.getString("data"); //使用fastjson将json字符串转成java对象 data1为json类型的字符串,JsonUser.class为要转成的实体类对象 //fast会将json字符串中的key与java实体类中的属性进行对应,所以实体类的属性名要与json字符串中的key相同 JsonUser jsonUser = JSON.parseObject(data1, JsonUser.class); System.out.println("使用javabean解析json字符串"); System.out.println("name:"+jsonUser.getName()+"-"+"age:"+jsonUser.getAge()); //3,解析带有数组(集合)的json字符串 //定义json字符串 String jsonArray = "{\"code\":0,\"data\":[{\"name\":\"你好\",\"age\":29},{\"name\":\"你好1\",\"age\":25}]}"; //将json字符串json格式化 JSONObject jsonObject1 = JSON.parseObject(jsonArray); //获取json字符串中的data,data为jsonarray类型 JSONArray data2 = jsonObject1.getJSONArray("data"); System.out.println("普通解析JSONArray字符串"); //遍历data2 JSONArray数组 //JSONArray的类型为Object for (Object obj:data2){
//循环打印 JSONObject jsonObject2 = JSON.parseObject(obj.toString()); System.out.println("name:"+jsonObject2.getString("name")+"-"+"age:"+jsonObject2.getInteger("age")); } //4,解析带有数组的json字符串 使用java对象接收 //使用parseArray方法 第一个参数为json格式的json数组字符串,第二个参数为接收的实体类类型 System.out.println("javaBean解析JSONArray字符串"); List<JsonUser> jsonUsers = JSON.parseArray(jsonObject1.getString("data"),JsonUser.class); for (JsonUser ju:jsonUsers){
System.out.println("name:"+ju.getName()+"-"+"age:"+ju.getAge()); } } }
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/206326.html原文链接:https://javaforall.net
