在Spring MVC中使用Gson将嵌套的Json数组转换为Java数组

时间:2018-02-20 07:57:21

标签: java json string gson

我有一个像这样的Json数组

String carJson =" [{\" brand \" :\" Mercedes \",\" door \" :5},{\"品牌\" :\" Mercedes \",\" door \" :5}]&#34 ;;

到目前为止我已经完成了这个

Car cars = gson.fromJson(carJson,Car[].class);

我的车类是

  private static class Car {
            private String brand = null;
            private int doors = 0;

            public String getBrand() { return this.brand; }
            public void   setBrand(String brand){ this.brand = brand;}

            public int  getDoors() { return this.doors; }
            public void setDoors (int doors) { this.doors = doors; }
    }

但它不起作用。 如何将此字符串数组转换为Java数组?以及如何使用键检索元素?

2 个答案:

答案 0 :(得分:0)

首先,您的源Json不正确。

内部arrays应更改为objects,因为arrays不是keyvalue结构,因为这些内部{{1}应该映射到objects个对象。

所以改变你的Car字符串:

json

然后使用以下代码将这些内部对象映射到Java中的String carJson = "[{ \"brand\" : \"Mercedes\", \"doors\" : 5 }, { \"brand\" : \"Mercedes\", \"doors\" : 5 }]"; 个对象:

Car

然后要读取汽车阵列数据,您可以使用:

Car[] cars = gson.fromJson(carJson, Car[].class);

这就是你的for(int i=0; i<cars.length; i++){ Car c = cars[i]; System.out.println("Car "+ i +" is : Brand= "+ c.getBrand() + "and doors = "+c.getDoors()); } 类定义的方式:

Car

答案 1 :(得分:0)

修复你的json:

public class Car {
    private String brand;
    private int doors;

    //Constructors

    public String getBrand(){
       return this.brand;
    }

    public void setBrand(String b){
       this.brand = b;
    }

    public String getDoors(){
       return this.doors;
    }

    public void setDoors(int n){
       this.doors= n;
    }
}

然后你可以这样做:

String carJson ="[{ \"brand\" : \"Mercedes\", \"doors\" : 5 }, { \"brand\" : \"Mercedes\", \"doors\" : 5 }]";