Json轉list,兩種包,兩種方式


1、使用fastjson

對於json串大小寫沒什么要求,測試的時候,我把javaBean屬性設置成和json串一樣的大小寫,代碼如下:

package com.myTest.json.test1;

import java.util.ArrayList;
import java.util.List;

import com.alibaba.fastjson.JSON;

public class app1 {

    public static void main(String[] args) {
        String jsonString = "[{'Value':'0','Name':'測試0','statusInfo':{'Status':'0'}},{'Value':'1','Name':'測試1','statusInfo':{'Status':'10'}},{'Value':'2','Name':'測試2','statusInfo':{'Status':'20'}},{'Value':'3','Name':'測試3','statusInfo':{'Status':'30'}},{'Value':'4','Name':'測試4','statusInfo':{'Status':'40'}},{'Value':'5','Name':'測試5','statusInfo':{'Status':'50'}},{'Value':'6','Name':'測試6','statusInfo':{'Status':'60'}},{'Value':'7','Name':'測試7','statusInfo':{'Status':'70'}},{'Value':'8','Name':'測試8','statusInfo':{'Status':'80'}},{'Value':'9','Name':'測試9','statusInfo':{'Status':'90'}}]";
        //String jsonString = "{'Value':'0','Name':'測試0','statusInfo':{'Status':'12'}}";
        List<DeviceReturn> deviceReturns= app1.getPersons(jsonString, DeviceReturn.class);
        System.out.println(deviceReturns);
        String toJsonString = JSON.toJSONString(deviceReturns);
        System.out.println(toJsonString);
        
    }

    public static <T> T getPerson(String jsonString, Class cls) {
        T t = null;
        try {
            t = (T) JSON.parseObject(jsonString, cls);
        } catch (Exception e) {
            // TODO: handle exception
        }
        return t;
    }
    
    public static <T> List<T> getPersons(String jsonString, Class cls) {
        List<T> list = new ArrayList<T>();
        try {
            list = JSON.parseArray(jsonString, cls);
        } catch (Exception e) {
        }
        return list;
    }
}

結果如下:

[com.myTest.json.test1.DeviceReturn@25d285b, com.myTest.json.test1.DeviceReturn@32046f93, com.myTest.json.test1.DeviceReturn@4139358c, com.myTest.json.test1.DeviceReturn@12ea9bc8, com.myTest.json.test1.DeviceReturn@6899712b, com.myTest.json.test1.DeviceReturn@31d4f3b3, com.myTest.json.test1.DeviceReturn@13cb8654, com.myTest.json.test1.DeviceReturn@16dffef3, com.myTest.json.test1.DeviceReturn@4bdb0f40, com.myTest.json.test1.DeviceReturn@1ac659a8]
[{"name":"測試0","statusInfo":{"status":"0"},"value":"0"},{"name":"測試1","statusInfo":{"status":"10"},"value":"1"},{"name":"測試2","statusInfo":{"status":"20"},"value":"2"},{"name":"測試3","statusInfo":{"status":"30"},"value":"3"},{"name":"測試4","statusInfo":{"status":"40"},"value":"4"},{"name":"測試5","statusInfo":{"status":"50"},"value":"5"},{"name":"測試6","statusInfo":{"status":"60"},"value":"6"},{"name":"測試7","statusInfo":{"status":"70"},"value":"7"},{"name":"測試8","statusInfo":{"status":"80"},"value":"8"},{"name":"測試9","statusInfo":{"status":"90"},"value":"9"}]

json串中大寫的,轉成javaBean,再轉成Json串后,變成符合java規范的屬性名,很強大的一個包,贊一個。

2、使用net.sf.json.JSON

json串必須是符合java規范的屬性,首字母必須小寫,否則不能轉成javaBean

public static void main(String[] args) {
        String jsonString = "[{\"value\":\"0\",\"name\":\"測試0\",\"statusInfo\":{\"status\":\"0\"}},{\"value\":\"1\",\"name\":\"測試1\",\"statusInfo\":{\"status\":\"10\"}}]";
        JSONArray array = JSONArray.fromObject(jsonString);
        System.out.println("JSONArray:"+array);
        List<?> deviceReturns = JSONArray.toList(array, new DeviceReturn(), new JsonConfig());
        JSONObject ob = JSONObject.fromObject(deviceReturns.get(0));
        System.out.println(ob);
    }

修改javaBean與之對應,也能成功。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM