欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文弄懂fastjson

 更新時(shí)間:2023年05月10日 09:31:13   作者:吳聲子夜歌  
fastjson?是一個(gè)java語(yǔ)言編寫的高性能且功能完善的JSON庫(kù),本文主要介紹了fastjson的使用,具有一定的參考價(jià)值,感興趣的可以了解一下

一、fastjson介紹

?在前后端數(shù)據(jù)傳輸交互中,經(jīng)常會(huì)遇到字符串(String)與json,XML等格式相互轉(zhuǎn)換與解析,其中json以跨語(yǔ)言,跨前后端的優(yōu)點(diǎn)在開發(fā)中被頻繁使用,基本上可以說(shuō)是標(biāo)準(zhǔn)的數(shù)據(jù)交換格式。fastjson 是一個(gè)java語(yǔ)言編寫的高性能且功能完善的JSON庫(kù),它采用一種“假定有序快速匹配”的算法,把JSON Parse 的性能提升到了極致。它的接口簡(jiǎn)單易用,已經(jīng)被廣泛使用在緩存序列化,協(xié)議交互,Web輸出等各種應(yīng)用場(chǎng)景中。

FastJson是啊里巴巴的的開源庫(kù),用于對(duì)JSON格式的數(shù)據(jù)進(jìn)行解析和打包。

特點(diǎn)如下:

  • 能夠支持將java bean序列化成JSON字符串,也能夠?qū)SON字符串反序列化成Java bean。
  • 顧名思義,fastjson操作 JSON的速度是非??斓?。
  • 無(wú)其他包的依賴。
  • 使用比較方便。

二、fastjson使用

maven依賴:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <!--(起碼1.2.48以上)因?yàn)檫@個(gè)版本一下存在漏洞-->
    <version>版本根據(jù)自己需要</version>
</dependency>

三、fastjson常用API

fastjson API 入口類是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON類上的靜態(tài)方法直接完成。

public static final Object parse(String text); // 把JSON文本parse為JSONObject或者JSONArray
public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject?
public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse為JavaBean?
public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray?
public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合?
public static final String toJSONString(Object object); // 將JavaBean序列化為JSON文本?
public static final String toJSONString(Object object, boolean prettyFormat); // 將JavaBean序列化為帶格式的JSON文本?
public static final Object toJSON(Object javaObject); //將JavaBean轉(zhuǎn)換為JSONObject或者JSONArray。

四、示例

public class User {
? ? private String username;
? ? private String password;
? ? public User() {
? ? }
? ? public User(String username, String password) {
? ? ? ? this.username = username;
? ? ? ? this.password = password;
? ? }
? ? public String getUsername() {
? ? ? ? return username;
? ? }
? ? public void setUsername(String username) {
? ? ? ? this.username = username;
? ? }
? ? public String getPassword() {
? ? ? ? return password;
? ? }
? ? public void setPassword(String password) {
? ? ? ? this.password = password;
? ? }
? ? @Override
? ? public String toString() {
? ? ? ? return "User{" +
? ? ? ? ? ? ? ? "username='" + username + '\'' +
? ? ? ? ? ? ? ? ", password='" + password + '\'' +
? ? ? ? ? ? ? ? '}';
? ? }
}
public class UserGroup {
? ? private String name;
? ? private List<User> users = new ArrayList<User>();
? ? public UserGroup() {
? ? }
? ? public UserGroup(String name, List<User> users) {
? ? ? ? this.name = name;
? ? ? ? this.users = users;
? ? }
? ? public String getName() {
? ? ? ? return name;
? ? }
? ? public void setName(String name) {
? ? ? ? this.name = name;
? ? }
? ? public List<User> getUsers() {
? ? ? ? return users;
? ? }
? ? public void setUsers(List<User> users) {
? ? ? ? this.users = users;
? ? }
? ? @Override
? ? public String toString() {
? ? ? ? return "UserGroup{" +
? ? ? ? ? ? ? ? "name='" + name + '\'' +
? ? ? ? ? ? ? ? ", users=" + users +
? ? ? ? ? ? ? ? '}';
? ? }
}
public class UserGroup {
    private String name;
    private List<User> users = new ArrayList<User>();
    public UserGroup() {
    }
    public UserGroup(String name, List<User> users) {
        this.name = name;
        this.users = users;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public List<User> getUsers() {
        return users;
    }
    public void setUsers(List<User> users) {
        this.users = users;
    }
    @Override
    public String toString() {
        return "UserGroup{" +
                "name='" + name + '\'' +
                ", users=" + users +
                '}';
    }
}

1. java類轉(zhuǎn)換為json字符串:

?? ?/**
? ? ?* java對(duì)象轉(zhuǎn)換為json字符串
? ? ?*/
? ? @Test
? ? public void objToJson() {
? ? ? ? //簡(jiǎn)單對(duì)象轉(zhuǎn)換
? ? ? ? User user = new User("root", "123456");
? ? ? ? //調(diào)用toJSONString()
? ? ? ? String userJson = JSON.toJSONString(user);
? ? ? ? System.out.println("java類轉(zhuǎn)換為json串:" + userJson);
? ? ? ? //集合轉(zhuǎn)json串
? ? ? ? User user1 = new User("zhangsan", "123456");
? ? ? ? User user2 = new User("lisi", "000");
? ? ? ? List<User> users = new ArrayList<User>();
? ? ? ? users.add(user1);
? ? ? ? users.add(user2);
? ? ? ? //調(diào)用toJSONString()
? ? ? ? String usersjson = JSON.toJSONString(users);
? ? ? ? System.out.println("集合轉(zhuǎn)json串:" + usersjson);
? ? ? ? //復(fù)雜java類轉(zhuǎn)換對(duì)象
? ? ? ? UserGroup userGroup = new UserGroup("userGroup", users);
? ? ? ? //調(diào)用toJSONString()
? ? ? ? String userGroupJson = JSON.toJSONString(userGroup);
? ? ? ? System.out.println("復(fù)雜java類轉(zhuǎn)換json串:" + userGroupJson);
? ? }

java類轉(zhuǎn)換為json串:{"password":"123456","username":"root"}
集合轉(zhuǎn)json串:[{"password":"123456","username":"zhangsan"},{"password":"000","username":"lisi"}]
復(fù)雜java類轉(zhuǎn)換json串:{"name":"userGroup","users":[{"password":"123456","username":"zhangsan"},{"password":"000","username":"lisi"}]}

2. json字符串轉(zhuǎn)為java類:

/**
? ? ?* json字符串轉(zhuǎn)為java類
? ? ?* 注:字符串中使用雙引號(hào)需要轉(zhuǎn)義 (" --> \"),這里使用的是單引號(hào),易讀性會(huì)好很多。
? ? ?* json串以“{}”包裹,轉(zhuǎn)換為java類時(shí),使用:parseObject();
? ? ?* json串以“[]”包裹,轉(zhuǎn)換為java類時(shí),使用:parseArray();
? ? ?*/
? ? @Test
? ? public void jsonToObj(){
? ? ? ? /* json字符串轉(zhuǎn)簡(jiǎn)單java對(duì)象
? ? ? ? ?* 字符串:{"password":"123456","username":"dmego"}
? ? ? ? ?*/
? ? ? ? String jsonStr1 = "{'password':'123456','username':'ggf'}";
? ? ? ? // 調(diào)用parseObject()
? ? ? ? User user = JSON.parseObject(jsonStr1, User.class);
? ? ? ? System.out.println("json字符串轉(zhuǎn)簡(jiǎn)單java對(duì)象:"+user.toString());
? ? ? ? /*
? ? ? ? ?* json字符串轉(zhuǎn)List<Object>對(duì)象
? ? ? ? ?* 字符串:[{"password":"123123","username":"zhangsan"},
? ? ? ? ?* ? ? ? ?{"password":"321321","username":"lisi"}]
? ? ? ? ?*/
? ? ? ? String jsonStr2 = "[{'password':'123123','username':'zhangsan'},{'password':'321321','username':'lisi'}]";
? ? ? ? // 調(diào)用parseArray()將字符串轉(zhuǎn)為集合
? ? ? ? List<User> users = JSON.parseArray(jsonStr2, User.class);
? ? ? ? System.out.println("json字符串轉(zhuǎn)List<Object>對(duì)象:"+users.toString());
? ? ? ? /*json字符串轉(zhuǎn)復(fù)雜java對(duì)象
? ? ? ? ?* 字符串:{"name":"userGroup","users":[{"password":"123123","username":"zhangsan"},{"password":"321321","username":"lisi"}]}
? ? ? ? ?* */
? ? ? ? String jsonStr3 = "{'name':'userGroup','users':[{'password':'123123','username':'zhangsan'},{'password':'321321','username':'lisi'}]}";
? ? ? ? UserGroup userGroup = JSON.parseObject(jsonStr3, UserGroup.class);
? ? ? ? System.out.println("json字符串轉(zhuǎn)復(fù)雜java對(duì)象:"+userGroup);
? ? }

json字符串轉(zhuǎn)簡(jiǎn)單java對(duì)象:User{username='ggf', password='123456'}
json字符串轉(zhuǎn)List<Object>對(duì)象:[User{username='zhangsan', password='123123'}, User{username='lisi', password='321321'}]
json字符串轉(zhuǎn)復(fù)雜java對(duì)象:UserGroup{name='userGroup', users=[User{username='zhangsan', password='123123'}, User{username='lisi', password='321321'}]}

五、實(shí)際應(yīng)用

1. 對(duì)復(fù)雜的json串轉(zhuǎn)為java類:

首先有這么一個(gè)json字符串,這是一個(gè)羊肉湯的菜譜,數(shù)據(jù)來(lái)源于《聚合數(shù)據(jù)》

{
  "resultcode":"200",
  "reason":"Success",
  "result":{
    "data":[
      {
        "id":"6269",
        "title":"羊肉湯",
        "tags":"增強(qiáng)抵抗力;煮;家常菜;湯;魯菜",
        "imtro":"鄒城人有喝羊湯的習(xí)慣,春夏秋冬羊湯館總斷不了食客,春秋天氣候干燥要喝,夏天入伏要喝“伏羊湯”,陰冷的冬季尤其要喝碗羊湯才夠溫暖。以至于邀友喝羊湯成為了禮儀;“二哥,晚上咱們喝羊湯去”。鄒城的羊湯鋪遍地開花,以至于單縣羊湯、滕州羊湯在鄒城都沒(méi)有了用武之地。我們這里的羊湯做法是最純的,基本不放煮肉的香料,就用羊骨和羊肉煮成,“肉嫩湯濃”是其特色。 煮羊湯要先煮羊骨,把羊骨斬成大段焯水后放一點(diǎn)羊板油用細(xì)火煮,煮到湯白味濃時(shí)放入羊肉。羊肉煮到用筷子能輕松插穿時(shí)就要撈出,久煮的話羊肉過(guò)爛就失去了軟嫩的口感。 碗里放入蔥花或蒜粒,調(diào)入精鹽,放入切的薄薄的羊肉片。把燒的滾開的羊湯盛到碗里,灑上香菜,再挖上一匙子香辣的用羊油潑成的辣椒油,一個(gè)字“香”!",
        "ingredients":"山羊肉,500g;羊骨,1000g",
        "burden":"生姜,適量;精鹽,適量;香菜,適量;大蔥,適量;辣椒油,適量;羊板油,適量",
        "albums":[
          "http:\/\/juheimg.oss-cn-hangzhou.aliyuncs.com\/cookbook\/t\/7\/6269_379835.jpg"
        ],
        "steps":[
          {
            "img":"http:\/\/juheimg.oss-cn-hangzhou.aliyuncs.com\/cookbook\/s\/63\/6269_95d65e77b58a1b6b.jpg",
            "step":"1.羊脊骨洗凈用刀斬成段。"
          },
          {
            "img":"http:\/\/juheimg.oss-cn-hangzhou.aliyuncs.com\/cookbook\/s\/63\/6269_a8136c10401a1643.jpg",
            "step":"2.煮鍋里倒入清水,放入羊脊骨,羊肉煮開后撈出。"
          },
          {
            "img":"http:\/\/juheimg.oss-cn-hangzhou.aliyuncs.com\/cookbook\/s\/63\/6269_c7b1c9fc85ddc6de.jpg",
            "step":"3.煮鍋里倒入開水,放入羊脊骨生姜塊大火煮開后改小火。"
          },
          {
            "img":"http:\/\/juheimg.oss-cn-hangzhou.aliyuncs.com\/cookbook\/s\/63\/6269_2b284dc30b4f0875.jpg",
            "step":"4.小火煮40分鐘,煮至湯色發(fā)白。"
          },
          {
            "img":"http:\/\/juheimg.oss-cn-hangzhou.aliyuncs.com\/cookbook\/s\/63\/6269_c7ade6439eb2db5a.jpg",
            "step":"5.放入羊肉,加入適量的羊板油小火煮30分鐘。"
          },
          {
            "img":"http:\/\/juheimg.oss-cn-hangzhou.aliyuncs.com\/cookbook\/s\/63\/6269_579748e3b0f15963.jpg",
            "step":"6.撈出煮好的羊肉,晾涼后切薄片。"
          },
          {
            "img":"http:\/\/juheimg.oss-cn-hangzhou.aliyuncs.com\/cookbook\/s\/63\/6269_1550e6f127aa1077.jpg",
            "step":"7.碗里放入蔥花,調(diào)入精鹽。"
          },
          {
            "img":"http:\/\/juheimg.oss-cn-hangzhou.aliyuncs.com\/cookbook\/s\/63\/6269_a2c965d77b96da70.jpg",
            "step":"8.放入羊肉片,把滾開的羊湯倒入碗里灑上香菜末。"
          },
          {
            "img":"http:\/\/juheimg.oss-cn-hangzhou.aliyuncs.com\/cookbook\/s\/63\/6269_eea9b807d1dc5995.jpg",
            "step":"9.可以根據(jù)喜好調(diào)入陳醋放入蒜粒,最后調(diào)入辣椒油即可。"
          }
        ]
      }
    ],
    "totalNum":"9",
    "pn":0,
    "rn":"1"
  },
  "error_code":0
}

要想解析這種復(fù)雜的字符串,把它轉(zhuǎn)換成java類的話,首先得先定義好與之相符的java POJO 對(duì)象,從上面的json字符串組成來(lái)看,我們可以拆分出來(lái)四個(gè)bean:

最外層的響應(yīng):ResponseData

返回結(jié)果:ResultBean

數(shù)據(jù):DataBean

做菜步驟:StepsBean

將拿到的json字符串?dāng)?shù)據(jù),用GsonFormat工具來(lái)生成java類。

GsonFormat工具的使用可參考該文章:http://www.dbjr.com.cn/article/283835.htm

public class ResponseData {
? ? /**
? ? ?* resultcode : 200
? ? ?* reason : Success
? ? ?* result : {"data":[{"id":"6269","title":"羊肉湯","tags":"增強(qiáng)抵抗力;煮;家常菜;湯;魯菜","imtro":"鄒城人有喝羊湯的習(xí)慣,春夏秋冬羊湯館總斷不了食客,春秋天氣候干燥要喝,夏天入伏要喝\u201c伏羊湯\u201d,陰冷的冬季尤其要喝碗羊湯才夠溫暖。以至于邀友喝羊湯成為了禮儀;\u201c二哥,晚上咱們喝羊湯去\u201d。鄒城的羊湯鋪遍地開花,以至于單縣羊湯、滕州羊湯在鄒城都沒(méi)有了用武之地。我們這里的羊湯做法是最純的,基本不放煮肉的香料,就用羊骨和羊肉煮成,\u201c肉嫩湯濃\u201d是其特色。 煮羊湯要先煮羊骨,把羊骨斬成大段焯水后放一點(diǎn)羊板油用細(xì)火煮,煮到湯白味濃時(shí)放入羊肉。羊肉煮到用筷子能輕松插穿時(shí)就要撈出,久煮的話羊肉過(guò)爛就失去了軟嫩的口感。 碗里放入蔥花或蒜粒,調(diào)入精鹽,放入切的薄薄的羊肉片。把燒的滾開的羊湯盛到碗里,灑上香菜,再挖上一匙子香辣的用羊油潑成的辣椒油,一個(gè)字\u201c香\u201d!","ingredients":"山羊肉,500g;羊骨,1000g","burden":"生姜,適量;精鹽,適量;香菜,適量;大蔥,適量;辣椒油,適量;羊板油,適量","albums":["http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/t/7/6269_379835.jpg"],"steps":[{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_95d65e77b58a1b6b.jpg","step":"1.羊脊骨洗凈用刀斬成段。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_a8136c10401a1643.jpg","step":"2.煮鍋里倒入清水,放入羊脊骨,羊肉煮開后撈出。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_c7b1c9fc85ddc6de.jpg","step":"3.煮鍋里倒入開水,放入羊脊骨生姜塊大火煮開后改小火。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_2b284dc30b4f0875.jpg","step":"4.小火煮40分鐘,煮至湯色發(fā)白。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_c7ade6439eb2db5a.jpg","step":"5.放入羊肉,加入適量的羊板油小火煮30分鐘。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_579748e3b0f15963.jpg","step":"6.撈出煮好的羊肉,晾涼后切薄片。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_1550e6f127aa1077.jpg","step":"7.碗里放入蔥花,調(diào)入精鹽。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_a2c965d77b96da70.jpg","step":"8.放入羊肉片,把滾開的羊湯倒入碗里灑上香菜末。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_eea9b807d1dc5995.jpg","step":"9.可以根據(jù)喜好調(diào)入陳醋放入蒜粒,最后調(diào)入辣椒油即可。"}]}],"totalNum":"9","pn":0,"rn":"1"}
? ? ?* error_code : 0
? ? ?*/
? ? private String resultcode;
? ? private String reason;
? ? private ResultBean result;
? ? private int error_code;
? ? public String getResultcode() {
? ? ? ? return resultcode;
? ? }
? ? public void setResultcode(String resultcode) {
? ? ? ? this.resultcode = resultcode;
? ? }
? ? public String getReason() {
? ? ? ? return reason;
? ? }
? ? public void setReason(String reason) {
? ? ? ? this.reason = reason;
? ? }
? ? public ResultBean getResult() {
? ? ? ? return result;
? ? }
? ? public void setResult(ResultBean result) {
? ? ? ? this.result = result;
? ? }
? ? public int getError_code() {
? ? ? ? return error_code;
? ? }
? ? public void setError_code(int error_code) {
? ? ? ? this.error_code = error_code;
? ? }
? ? public static class ResultBean {
? ? ? ? /**
? ? ? ? ?* data : [{"id":"6269","title":"羊肉湯","tags":"增強(qiáng)抵抗力;煮;家常菜;湯;魯菜","imtro":"鄒城人有喝羊湯的習(xí)慣,春夏秋冬羊湯館總斷不了食客,春秋天氣候干燥要喝,夏天入伏要喝\u201c伏羊湯\u201d,陰冷的冬季尤其要喝碗羊湯才夠溫暖。以至于邀友喝羊湯成為了禮儀;\u201c二哥,晚上咱們喝羊湯去\u201d。鄒城的羊湯鋪遍地開花,以至于單縣羊湯、滕州羊湯在鄒城都沒(méi)有了用武之地。我們這里的羊湯做法是最純的,基本不放煮肉的香料,就用羊骨和羊肉煮成,\u201c肉嫩湯濃\u201d是其特色。 煮羊湯要先煮羊骨,把羊骨斬成大段焯水后放一點(diǎn)羊板油用細(xì)火煮,煮到湯白味濃時(shí)放入羊肉。羊肉煮到用筷子能輕松插穿時(shí)就要撈出,久煮的話羊肉過(guò)爛就失去了軟嫩的口感。 碗里放入蔥花或蒜粒,調(diào)入精鹽,放入切的薄薄的羊肉片。把燒的滾開的羊湯盛到碗里,灑上香菜,再挖上一匙子香辣的用羊油潑成的辣椒油,一個(gè)字\u201c香\u201d!","ingredients":"山羊肉,500g;羊骨,1000g","burden":"生姜,適量;精鹽,適量;香菜,適量;大蔥,適量;辣椒油,適量;羊板油,適量","albums":["http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/t/7/6269_379835.jpg"],"steps":[{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_95d65e77b58a1b6b.jpg","step":"1.羊脊骨洗凈用刀斬成段。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_a8136c10401a1643.jpg","step":"2.煮鍋里倒入清水,放入羊脊骨,羊肉煮開后撈出。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_c7b1c9fc85ddc6de.jpg","step":"3.煮鍋里倒入開水,放入羊脊骨生姜塊大火煮開后改小火。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_2b284dc30b4f0875.jpg","step":"4.小火煮40分鐘,煮至湯色發(fā)白。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_c7ade6439eb2db5a.jpg","step":"5.放入羊肉,加入適量的羊板油小火煮30分鐘。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_579748e3b0f15963.jpg","step":"6.撈出煮好的羊肉,晾涼后切薄片。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_1550e6f127aa1077.jpg","step":"7.碗里放入蔥花,調(diào)入精鹽。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_a2c965d77b96da70.jpg","step":"8.放入羊肉片,把滾開的羊湯倒入碗里灑上香菜末。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_eea9b807d1dc5995.jpg","step":"9.可以根據(jù)喜好調(diào)入陳醋放入蒜粒,最后調(diào)入辣椒油即可。"}]}]
? ? ? ? ?* totalNum : 9
? ? ? ? ?* pn : 0
? ? ? ? ?* rn : 1
? ? ? ? ?*/
? ? ? ? private String totalNum;
? ? ? ? private int pn;
? ? ? ? private String rn;
? ? ? ? private List<DataBean> data;
? ? ? ? public String getTotalNum() {
? ? ? ? ? ? return totalNum;
? ? ? ? }
? ? ? ? public void setTotalNum(String totalNum) {
? ? ? ? ? ? this.totalNum = totalNum;
? ? ? ? }
? ? ? ? public int getPn() {
? ? ? ? ? ? return pn;
? ? ? ? }
? ? ? ? public void setPn(int pn) {
? ? ? ? ? ? this.pn = pn;
? ? ? ? }
? ? ? ? public String getRn() {
? ? ? ? ? ? return rn;
? ? ? ? }
? ? ? ? public void setRn(String rn) {
? ? ? ? ? ? this.rn = rn;
? ? ? ? }
? ? ? ? public List<DataBean> getData() {
? ? ? ? ? ? return data;
? ? ? ? }
? ? ? ? public void setData(List<DataBean> data) {
? ? ? ? ? ? this.data = data;
? ? ? ? }
? ? ? ? public static class DataBean {
? ? ? ? ? ? /**
? ? ? ? ? ? ?* id : 6269
? ? ? ? ? ? ?* title : 羊肉湯
? ? ? ? ? ? ?* tags : 增強(qiáng)抵抗力;煮;家常菜;湯;魯菜
? ? ? ? ? ? ?* imtro : 鄒城人有喝羊湯的習(xí)慣,春夏秋冬羊湯館總斷不了食客,春秋天氣候干燥要喝,夏天入伏要喝“伏羊湯”,陰冷的冬季尤其要喝碗羊湯才夠溫暖。以至于邀友喝羊湯成為了禮儀;“二哥,晚上咱們喝羊湯去”。鄒城的羊湯鋪遍地開花,以至于單縣羊湯、滕州羊湯在鄒城都沒(méi)有了用武之地。我們這里的羊湯做法是最純的,基本不放煮肉的香料,就用羊骨和羊肉煮成,“肉嫩湯濃”是其特色。 煮羊湯要先煮羊骨,把羊骨斬成大段焯水后放一點(diǎn)羊板油用細(xì)火煮,煮到湯白味濃時(shí)放入羊肉。羊肉煮到用筷子能輕松插穿時(shí)就要撈出,久煮的話羊肉過(guò)爛就失去了軟嫩的口感。 碗里放入蔥花或蒜粒,調(diào)入精鹽,放入切的薄薄的羊肉片。把燒的滾開的羊湯盛到碗里,灑上香菜,再挖上一匙子香辣的用羊油潑成的辣椒油,一個(gè)字“香”!
? ? ? ? ? ? ?* ingredients : 山羊肉,500g;羊骨,1000g
? ? ? ? ? ? ?* burden : 生姜,適量;精鹽,適量;香菜,適量;大蔥,適量;辣椒油,適量;羊板油,適量
? ? ? ? ? ? ?* albums : ["http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/t/7/6269_379835.jpg"]
? ? ? ? ? ? ?* steps : [{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_95d65e77b58a1b6b.jpg","step":"1.羊脊骨洗凈用刀斬成段。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_a8136c10401a1643.jpg","step":"2.煮鍋里倒入清水,放入羊脊骨,羊肉煮開后撈出。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_c7b1c9fc85ddc6de.jpg","step":"3.煮鍋里倒入開水,放入羊脊骨生姜塊大火煮開后改小火。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_2b284dc30b4f0875.jpg","step":"4.小火煮40分鐘,煮至湯色發(fā)白。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_c7ade6439eb2db5a.jpg","step":"5.放入羊肉,加入適量的羊板油小火煮30分鐘。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_579748e3b0f15963.jpg","step":"6.撈出煮好的羊肉,晾涼后切薄片。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_1550e6f127aa1077.jpg","step":"7.碗里放入蔥花,調(diào)入精鹽。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_a2c965d77b96da70.jpg","step":"8.放入羊肉片,把滾開的羊湯倒入碗里灑上香菜末。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_eea9b807d1dc5995.jpg","step":"9.可以根據(jù)喜好調(diào)入陳醋放入蒜粒,最后調(diào)入辣椒油即可。"}]
? ? ? ? ? ? ?*/
? ? ? ? ? ? private String id;
? ? ? ? ? ? private String title;
? ? ? ? ? ? private String tags;
? ? ? ? ? ? private String imtro;
? ? ? ? ? ? private String ingredients;
? ? ? ? ? ? private String burden;
? ? ? ? ? ? private List<String> albums;
? ? ? ? ? ? private List<StepsBean> steps;
? ? ? ? ? ? public String getId() {
? ? ? ? ? ? ? ? return id;
? ? ? ? ? ? }
? ? ? ? ? ? public void setId(String id) {
? ? ? ? ? ? ? ? this.id = id;
? ? ? ? ? ? }
? ? ? ? ? ? public String getTitle() {
? ? ? ? ? ? ? ? return title;
? ? ? ? ? ? }
? ? ? ? ? ? public void setTitle(String title) {
? ? ? ? ? ? ? ? this.title = title;
? ? ? ? ? ? }
? ? ? ? ? ? public String getTags() {
? ? ? ? ? ? ? ? return tags;
? ? ? ? ? ? }
? ? ? ? ? ? public void setTags(String tags) {
? ? ? ? ? ? ? ? this.tags = tags;
? ? ? ? ? ? }
? ? ? ? ? ? public String getImtro() {
? ? ? ? ? ? ? ? return imtro;
? ? ? ? ? ? }
? ? ? ? ? ? public void setImtro(String imtro) {
? ? ? ? ? ? ? ? this.imtro = imtro;
? ? ? ? ? ? }
? ? ? ? ? ? public String getIngredients() {
? ? ? ? ? ? ? ? return ingredients;
? ? ? ? ? ? }
? ? ? ? ? ? public void setIngredients(String ingredients) {
? ? ? ? ? ? ? ? this.ingredients = ingredients;
? ? ? ? ? ? }
? ? ? ? ? ? public String getBurden() {
? ? ? ? ? ? ? ? return burden;
? ? ? ? ? ? }
? ? ? ? ? ? public void setBurden(String burden) {
? ? ? ? ? ? ? ? this.burden = burden;
? ? ? ? ? ? }
? ? ? ? ? ? public List<String> getAlbums() {
? ? ? ? ? ? ? ? return albums;
? ? ? ? ? ? }
? ? ? ? ? ? public void setAlbums(List<String> albums) {
? ? ? ? ? ? ? ? this.albums = albums;
? ? ? ? ? ? }
? ? ? ? ? ? public List<StepsBean> getSteps() {
? ? ? ? ? ? ? ? return steps;
? ? ? ? ? ? }
? ? ? ? ? ? public void setSteps(List<StepsBean> steps) {
? ? ? ? ? ? ? ? this.steps = steps;
? ? ? ? ? ? }
? ? ? ? ? ? public static class StepsBean {
? ? ? ? ? ? ? ? /**
? ? ? ? ? ? ? ? ?* img : http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_95d65e77b58a1b6b.jpg
? ? ? ? ? ? ? ? ?* step : 1.羊脊骨洗凈用刀斬成段。
? ? ? ? ? ? ? ? ?*/
? ? ? ? ? ? ? ? private String img;
? ? ? ? ? ? ? ? private String step;
? ? ? ? ? ? ? ? public String getImg() {
? ? ? ? ? ? ? ? ? ? return img;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? public void setImg(String img) {
? ? ? ? ? ? ? ? ? ? this.img = img;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? public String getStep() {
? ? ? ? ? ? ? ? ? ? return step;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? public void setStep(String step) {
? ? ? ? ? ? ? ? ? ? this.step = step;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? }
}
對(duì)應(yīng)的實(shí)體類創(chuàng)建后,接下來(lái)就可以使用fastjson中的方法將json串轉(zhuǎn)換成對(duì)象使用了
?? ?/**
? ? ?* 將復(fù)雜的json串轉(zhuǎn)換為java類
? ? ?*/
? ? @Test
? ? public void jsonToComplexObj() {
? ? ? ? // 讀取類路徑下的caipu.json文件,這里使用了第三方工具h(yuǎn)utool進(jìn)行讀取json文件
? ? ? ? // 工具類參見(jiàn):https://hutool.cn/docs/#/
? ? ? ? String jsonStr = FileUtil.readUtf8String(new File("caipu.json"));
? ? ? ? System.out.println(jsonStr);
? ? ? ? // 轉(zhuǎn)換為java類
? ? ? ? ResponseData resp = JSON.parseObject(jsonStr, ResponseData.class);
? ? ? ? System.out.println(resp);
? ? ? ? // 通過(guò)對(duì)象操作數(shù)據(jù)
? ? ? ? // 獲取響應(yīng)碼resultcode
? ? ? ? System.out.println(resp.getResultcode());
? ? ? ? // 獲取響應(yīng)數(shù)據(jù)
? ? ? ? ResponseData.ResultBean result = resp.getResult();
? ? ? ? System.out.println("result響應(yīng)數(shù)據(jù):" + result);
? ? }

輸出結(jié)果:

{
  "resultcode":"200",
  "reason":"Success",
  "result":{
    "data":[
      {
        "id":"6269",
        "title":"羊肉湯",
        "tags":"增強(qiáng)抵抗力;煮;家常菜;湯;魯菜",
        "imtro":"鄒城人有喝羊湯的習(xí)慣,春夏秋冬羊湯館總斷不了食客,春秋天氣候干燥要喝,夏天入伏要喝“伏羊湯”,陰冷的冬季尤其要喝碗羊湯才夠溫暖。以至于邀友喝羊湯成為了禮儀;“二哥,晚上咱們喝羊湯去”。鄒城的羊湯鋪遍地開花,以至于單縣羊湯、滕州羊湯在鄒城都沒(méi)有了用武之地。我們這里的羊湯做法是最純的,基本不放煮肉的香料,就用羊骨和羊肉煮成,“肉嫩湯濃”是其特色。 煮羊湯要先煮羊骨,把羊骨斬成大段焯水后放一點(diǎn)羊板油用細(xì)火煮,煮到湯白味濃時(shí)放入羊肉。羊肉煮到用筷子能輕松插穿時(shí)就要撈出,久煮的話羊肉過(guò)爛就失去了軟嫩的口感。 碗里放入蔥花或蒜粒,調(diào)入精鹽,放入切的薄薄的羊肉片。把燒的滾開的羊湯盛到碗里,灑上香菜,再挖上一匙子香辣的用羊油潑成的辣椒油,一個(gè)字“香”!",
        "ingredients":"山羊肉,500g;羊骨,1000g",
        "burden":"生姜,適量;精鹽,適量;香菜,適量;大蔥,適量;辣椒油,適量;羊板油,適量",
        "albums":[
          "http:\/\/juheimg.oss-cn-hangzhou.aliyuncs.com\/cookbook\/t\/7\/6269_379835.jpg"
        ],
        "steps":[
          {
            "img":"http:\/\/juheimg.oss-cn-hangzhou.aliyuncs.com\/cookbook\/s\/63\/6269_95d65e77b58a1b6b.jpg",
            "step":"1.羊脊骨洗凈用刀斬成段。"
          },
          {
            "img":"http:\/\/juheimg.oss-cn-hangzhou.aliyuncs.com\/cookbook\/s\/63\/6269_a8136c10401a1643.jpg",
            "step":"2.煮鍋里倒入清水,放入羊脊骨,羊肉煮開后撈出。"
          },
          {
            "img":"http:\/\/juheimg.oss-cn-hangzhou.aliyuncs.com\/cookbook\/s\/63\/6269_c7b1c9fc85ddc6de.jpg",
            "step":"3.煮鍋里倒入開水,放入羊脊骨生姜塊大火煮開后改小火。"
          },
          {
            "img":"http:\/\/juheimg.oss-cn-hangzhou.aliyuncs.com\/cookbook\/s\/63\/6269_2b284dc30b4f0875.jpg",
            "step":"4.小火煮40分鐘,煮至湯色發(fā)白。"
          },
          {
            "img":"http:\/\/juheimg.oss-cn-hangzhou.aliyuncs.com\/cookbook\/s\/63\/6269_c7ade6439eb2db5a.jpg",
            "step":"5.放入羊肉,加入適量的羊板油小火煮30分鐘。"
          },
          {
            "img":"http:\/\/juheimg.oss-cn-hangzhou.aliyuncs.com\/cookbook\/s\/63\/6269_579748e3b0f15963.jpg",
            "step":"6.撈出煮好的羊肉,晾涼后切薄片。"
          },
          {
            "img":"http:\/\/juheimg.oss-cn-hangzhou.aliyuncs.com\/cookbook\/s\/63\/6269_1550e6f127aa1077.jpg",
            "step":"7.碗里放入蔥花,調(diào)入精鹽。"
          },
          {
            "img":"http:\/\/juheimg.oss-cn-hangzhou.aliyuncs.com\/cookbook\/s\/63\/6269_a2c965d77b96da70.jpg",
            "step":"8.放入羊肉片,把滾開的羊湯倒入碗里灑上香菜末。"
          },
          {
            "img":"http:\/\/juheimg.oss-cn-hangzhou.aliyuncs.com\/cookbook\/s\/63\/6269_eea9b807d1dc5995.jpg",
            "step":"9.可以根據(jù)喜好調(diào)入陳醋放入蒜粒,最后調(diào)入辣椒油即可。"
          }
        ]
      }
    ],
    "totalNum":"9",
    "pn":0,
    "rn":"1"
  },
  "error_code":0
}

fastjson.ResponseData@445b84c0
200
result響應(yīng)數(shù)據(jù):fastjson.ResponseData$ResultBean@61a52fbd

2. 對(duì)json串的操作:

在實(shí)際開發(fā)中,我們經(jīng)常要對(duì)接口返回的json數(shù)據(jù),進(jìn)行操作,獲取里面的某些數(shù)據(jù)。還是以上面的json字符串為例,使用fastjson,對(duì)json字符串進(jìn)行操作

/**
? ? ?* 對(duì)json串的操作
? ? ?*/
? ? @Test
? ? public void operateJson() {
? ? ? ? // 讀取本地json文本
? ? ? ? String jsonStr = FileUtil.readUtf8String(new File("caipu.json"));
? ? ? ? // 創(chuàng)建json對(duì)象
? ? ? ? JSONObject jsonObj = JSONObject.parseObject(jsonStr);
? ? ? ? // 操作json內(nèi)容
? ? ? ? // 獲取響應(yīng)碼resultcode
? ? ? ? System.out.println(jsonObj.get("resultcode"));
? ? ? ? // 獲取響應(yīng)信息reason
? ? ? ? System.out.println(jsonObj.getString("reason"));
? ? ? ? // 獲取data
? ? ? ? JSONObject resJsonObj = (JSONObject)jsonObj.get("result");
? ? ? ? System.out.println(resJsonObj.getString("data"));
? ? }

輸出結(jié)果:

200
Success
[{"albums":["http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/t/7/6269_379835.jpg"],"imtro":"鄒城人有喝羊湯的習(xí)慣,春夏秋冬羊湯館總斷不了食客,春秋天氣候干燥要喝,夏天入伏要喝“伏羊湯”,陰冷的冬季尤其要喝碗羊湯才夠溫暖。以至于邀友喝羊湯成為了禮儀;“二哥,晚上咱們喝羊湯去”。鄒城的羊湯鋪遍地開花,以至于單縣羊湯、滕州羊湯在鄒城都沒(méi)有了用武之地。我們這里的羊湯做法是最純的,基本不放煮肉的香料,就用羊骨和羊肉煮成,“肉嫩湯濃”是其特色。 煮羊湯要先煮羊骨,把羊骨斬成大段焯水后放一點(diǎn)羊板油用細(xì)火煮,煮到湯白味濃時(shí)放入羊肉。羊肉煮到用筷子能輕松插穿時(shí)就要撈出,久煮的話羊肉過(guò)爛就失去了軟嫩的口感。 碗里放入蔥花或蒜粒,調(diào)入精鹽,放入切的薄薄的羊肉片。把燒的滾開的羊湯盛到碗里,灑上香菜,再挖上一匙子香辣的用羊油潑成的辣椒油,一個(gè)字“香”!","ingredients":"山羊肉,500g;羊骨,1000g","id":"6269","title":"羊肉湯","steps":[{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_95d65e77b58a1b6b.jpg","step":"1.羊脊骨洗凈用刀斬成段。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_a8136c10401a1643.jpg","step":"2.煮鍋里倒入清水,放入羊脊骨,羊肉煮開后撈出。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_c7b1c9fc85ddc6de.jpg","step":"3.煮鍋里倒入開水,放入羊脊骨生姜塊大火煮開后改小火。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_2b284dc30b4f0875.jpg","step":"4.小火煮40分鐘,煮至湯色發(fā)白。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_c7ade6439eb2db5a.jpg","step":"5.放入羊肉,加入適量的羊板油小火煮30分鐘。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_579748e3b0f15963.jpg","step":"6.撈出煮好的羊肉,晾涼后切薄片。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_1550e6f127aa1077.jpg","step":"7.碗里放入蔥花,調(diào)入精鹽。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_a2c965d77b96da70.jpg","step":"8.放入羊肉片,把滾開的羊湯倒入碗里灑上香菜末。"},{"img":"http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/s/63/6269_eea9b807d1dc5995.jpg","step":"9.可以根據(jù)喜好調(diào)入陳醋放入蒜粒,最后調(diào)入辣椒油即可。"}],"tags":"增強(qiáng)抵抗力;煮;家常菜;湯;魯菜","burden":"生姜,適量;精鹽,適量;香菜,適量;大蔥,適量;辣椒油,適量;羊板油,適量"}]

六、fastjson樓棟問(wèn)題

可參考文章:http://www.dbjr.com.cn/article/283826.htm

真實(shí)項(xiàng)目中使用建設(shè)使用版本大于:1.2.45

注意
序列化的類必須有一個(gè)無(wú)參構(gòu)造方法

被序列化的類需要有一個(gè)無(wú)參的構(gòu)造方法。否則會(huì)報(bào)錯(cuò)

Exception in thread "main" com.alibaba.fastjson.JSONException: default constructor not found. class User

如果你沒(méi)有重寫構(gòu)造方法,那么每個(gè)類都自帶一個(gè)無(wú)參的構(gòu)造方法,但是如果你重寫了一個(gè)有參的構(gòu)造方法,那么默認(rèn)的無(wú)參構(gòu)造方法會(huì)被覆蓋,這時(shí)候就需要你手動(dòng)寫一個(gè)無(wú)參的構(gòu)造方法進(jìn)去。所以我建議保險(xiǎn)起見(jiàn),需要被json序列化的類最好都手動(dòng)寫一個(gè)無(wú)參的構(gòu)造方法進(jìn)去。

在低版本中轉(zhuǎn)換的時(shí)候會(huì)直接拋以上異常信息(測(cè)試版本:fastjson-1.1.12)。但是高版本(fastjson-1.2.58)就不會(huì)報(bào)錯(cuò)。
建議在定義javabean時(shí)都把無(wú)參和有參定義。

到此這篇關(guān)于一文弄懂fastjson的文章就介紹到這了,更多相關(guān)fastjson內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論