FastJson解析嵌套json

FastJson解析嵌套json

我是遇到了json數據和對應的實體類的屬性名不一致並且還不能新建實體類的問題,這個應該是最笨的方法了。


比如這麼一串json數據

{
    \"name\":\"zhangsan\",
    \"address\":{\"city\":\"shanghaishi\",\"province\":\"shanghai\"},
    \"age\":24,
    \"cars\":
        [{\"brand\":\"BMW\",\"color\":\"red\"},{\"brand\":\"benz\",\"color\":\"black\"}]
}

有address對象,也有cars集合。

實體類

User


public class User {

    private String name;
    private int age;
    private Address address;
    private List<Car> cars;

    .
    .
    .
    .
}

Address
// 不要用拼音,我是爲了顯得屬性名和json數據不一致

public class Address {

    private String sheng;
    private String shi;

    .
    .
}

Car

public class Car {

    private String pinpai;
    private String yanse;

    .
    .
}

FastJsonTest

public class FastJsonTest {

    @SuppressWarnings("rawtypes")
    public static User fastJsonTest(String jsonData) {

        User user = new User();
        if (StringUtils.isNotBlank(jsonData)) {
            List<Car> cars = new ArrayList<Car>();
            Address address = new Address();
            JSONObject json = JSONObject.parseObject(jsonData);
            // 解析
            // 獲取cars
            Car car = null;
            List<HashMap> carsList = JSON.parseArray(json.getString("cars"), HashMap.class);
            for (int i = 0; i < carsList.size(); i++) {
                car = new Car();
                car.setPinpai(carsList.get(i).get("brand").toString());
                car.setYanse(carsList.get(i).get("color").toString());
                cars.add(car);
            }
            user.setCars(cars);
            // 獲取address
            JSONObject addressJson = json.getJSONObject("address");
            address.setSheng(addressJson.getString("province"));
            address.setShi(addressJson.getString("city"));
            user.setAddress(address);

            user.setAge(json.getIntValue("age"));
            user.setName(json.getString("name"));
        }
        return user;
    }

    public static void main(String[] args) {
        String jsonData = "{\"name\":\"zhangsan\",\"address\":{\"city\":\"shanghaishi\",\"province\":\"shanghai\"},\"age\":24,\"cars\":[{\"brand\":\"BMW\",\"color\":\"red\"},{\"brand\":\"benz\",\"color\":\"black\"}]}";
        User user = fastJsonTest(jsonData);
        System.out.println(user.getName() + "\t" + user.getAge());
        System.out.println(user.getAddress().getSheng() + "\t" + user.getAddress().getShi());
        for (Car car : user.getCars()) {
            System.out.println(car.getPinpai() + "\t" + car.getYanse());
        }
    }

}

輸出結果:

zhangsan    24
shanghai    shanghaishi
BMW red
benz    black
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章