fastjson的簡單使用

實習初期,開始接觸到系統的後臺日誌查詢展現到前臺,後臺將查詢到的數據轉化成json格式返回前臺,發現系統使用的是阿里的fastjson,因而想來了解一下fastjson的使用。html

如下使用都是基於這個版本:java

1 <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
2     <dependency>
3       <groupId>com.alibaba</groupId>
4       <artifactId>fastjson</artifactId>
5       <version>1.2.49</version>
6     </dependency>

 我在學習以前,對json字符串和json對象是分不清的,特意百度找了一篇好文能夠很好的區分JSON字符串與JSON對象的區別json

此文主要是使用java來進行轉換,在jsp頁面使用js/jq進行轉換,也特意百度找了一篇好文能夠學習:json字符串、json對象、數組之間的轉換數組

1、簡單對象與json之間轉換:

簡單對象:jsp

public class Person {
    private String lastName;
    private String gender;
    private Integer age;

    public Person() {
    }
   //此處省略getter,setter方法,否則代碼太長,影響閱讀
@Override public String toString() { return "Person{" + "lastName='" + lastName + '\'' + ", gender='" + gender + '\'' + ", age=" + age + '}'; } }

1.簡單對象轉json:

 1 import com.alibaba.fastjson.JSON;
 2 import com.alibaba.fastjson.JSONObject;
 3 
 4 public class JsonUtil {
 5 
 6     public static void main(String[] args){
 7         Person person = new Person();
 8         person.setLastName("張三");
 9         person.setGender("男");
10         person.setAge(30);
11 
12         //簡單對象轉換成json字符串
13         String jsonStr = JSON.toJSONString(person);
14         System.out.println("jsonStr = "+jsonStr);
15         //json字符串轉換成json對象
16         JSONObject jsonObject = JSONObject.parseObject(jsonStr);
17         System.out.println("jsonObject = "+jsonObject.toString());
18     }
19 
20 }

運行結果:ide

二、json轉簡單對象:

1 @Test
2     public void jsonToJavabean(){
3         String jsonStr = "{ \"lastName\": \"李四\", \"gender\": \"女\", \"age\": 28 }";
4         Person person = JSON.parseObject(jsonStr,Person.class);
5         System.out.println(person);
6     }

 2、list對象與json之間轉換

一、list對象轉jsonArray:

 1 public void testListToJson(){
 2         List<Person> list = new ArrayList<>();
 3         Person person1 = new Person("AAA","男",12);
 4         Person person2 = new Person("BBB","女",24);
 5         Person person3 = new Person("CCC","女",18);
 6         Person person4 = new Person("DDD","男",49);
 7         list.add(person1);
 8         list.add(person2);
 9         list.add(person3);
10         list.add(person4);
11 
12         String jsonStr = JSON.toJSONString(list);
13         System.out.println(jsonStr);
14         JSONArray jsonArray = JSONArray.parseArray(jsonStr);
15         System.out.println(jsonArray);
16 
17 
18     }

注意:這裏是JSONArray,不是JSONObject.post

運行結果:學習

二、json字符串轉list:

1 public void testJsonToList(){
2         String jsonStr = "[{\"lastName\":\"AAA\",\"gender\":\"男\",\"age\":12},
{\"lastName\":\"BBB\",\"gender\":\"女\",\"age\":24},
{\"lastName\":\"CCC\",\"gender\":\"女\",\"age\":18},
{\"lastName\":\"DDD\",\"gender\":\"男\",\"age\":49}]"; 3 List<Person> list = JSON.parseArray(jsonStr,Person.class); 4 System.out.println(list.get(0)); 5 System.out.println(list.get(1)); 6 System.out.println(list.get(2)); 7 System.out.println(list.get(3)); 8 }

List<Person> list = JSON.parseArray(jsonStr,Person.class),這裏的Person.class是根據泛型決定的。url

例如:List<Map<String,Object>>  mapList  = JSON.parseArray(menuJson,Map.class)spa

運行結果:

3、map與json之間轉換

一、map轉json:

 1 public void testMapToJson(){
 2         Map<String,Object> map = new HashMap<>();
 3         map.put("id",1);
 4         map.put("name","shenggangfeng");
 5         map.put("age",23);
 6         map.put("gender","男");
 7 
 8         String jsonstr = JSON.toJSONString(map);
 9         System.out.println(jsonstr);
10 
11         JSONObject jsonObject = JSONObject.parseObject(jsonstr);
12         System.out.println(jsonObject);
13     }

運行結果:

二、json轉map

1 public void testJsonToMap(){
2         String jsonStr = "{ \"id\": 2,\"name\": \"liull\",\"age\": 22,\"gender\": \"女\" }";
3         Map<String,Object> map = JSON.parseObject(jsonStr,Map.class);
4         System.out.println(map.get("id"));
5         System.out.println(map.get("name"));
6         System.out.println(map.get("age"));
7         System.out.println(map.get("gender"));
8     }

運行結果:

總結:

已上轉換方法中用的最多的也就幾個特定的方法:

1.JSON的靜態方法toJSONString(Object object),用於將java對象轉化成json字符串

1 public static String toJSONString(Object object) {
2         return toJSONString(object, emptyFilters, new SerializerFeature[0]);
3     }

2.JSON的靜態方法parseObject(String text,Class<T> clazz),用於將json字符串轉換成java對象

1 public static <T> T parseObject(String text, Class<T> clazz) {
2         return parseObject(text, clazz, new Feature[0]);
3     }

3.JSON的靜態方法parseObject(String text),用於將json字符串轉換成json對象

 1 public static JSONObject parseObject(String text) {
 2         Object obj = parse(text);
 3         if(obj instanceof JSONObject) {
 4             return (JSONObject)obj;
 5         } else {
 6             try {
 7                 return (JSONObject)toJSON(obj);
 8             } catch (RuntimeException var3) {
 9                 throw new JSONException("can not cast to JSONObject.", var3);
10             }
11         }
12     }

4.JSON的靜態方法parseArray(String text),用於將json字符串轉換成json數組。

 1 public static JSONArray parseArray(String text) {
 2         if(text == null) {
 3             return null;
 4         } else {
 5             DefaultJSONParser parser = new DefaultJSONParser(text, ParserConfig.getGlobalInstance());
 6             JSONLexer lexer = parser.lexer;
 7             JSONArray array;
 8             if(lexer.token() == 8) {
 9                 lexer.nextToken();
10                 array = null;
11             } else if(lexer.token() == 20) {
12                 array = null;
13             } else {
14                 array = new JSONArray();
15                 parser.parseArray(array);
16                 parser.handleResovleTask(array);
17             }
18 
19             parser.close();
20             return array;
21         }
22     }

5.JSON的靜態方法parseArray(String text, Class<T> clazz),用於將json字符串轉換成java數組,其中第二個參數是數組元素的類型。

 1 public static <T> List<T> parseArray(String text, Class<T> clazz) {
 2         if(text == null) {
 3             return null;
 4         } else {
 5             DefaultJSONParser parser = new DefaultJSONParser(text, ParserConfig.getGlobalInstance());
 6             JSONLexer lexer = parser.lexer;
 7             int token = lexer.token();
 8             ArrayList list;
 9             if(token == 8) {
10                 lexer.nextToken();
11                 list = null;
12             } else if(token == 20 && lexer.isBlankInput()) {
13                 list = null;
14             } else {
15                 list = new ArrayList();
16                 parser.parseArray(clazz, list);
17                 parser.handleResovleTask(list);
18             }
19 
20             parser.close();
21             return list;
22         }
23     }
相關文章
相關標籤/搜索