Android JSON解析多个对象

时间:2018-03-05 21:32:13

标签: android json gson

我有JSON:

{
  "Temperature": {
    "Name": "Temperature",
    "Value": "26.19",
    "Unit": "C"
  },
  "Humidity": {
    "Name": "Humidity",
    "Value": "29.38%",
    "Unit": "%"
  }
}

我希望将其保存到相同类型的对象列表中。这是我的班级:

public class Measurement {
    private String name;
    private String value;
    private String unit;

    public Measurement(String name, String value, String unit){
        this.name = name;
        this.value = value;
        this.unit = unit;
    }

    public String getName() {
        return name;
    }

    public String getValue() {
        return value;
    }

    public String getUnit() {
        return unit;
    }

    @Override
    public String toString(){
        return name + " = " + value + unit;
    }
}

我已经尝试过像这样的gson:

Type measurementListType = new TypeToken<ArrayList<Measurement>>(){}.getType();

List<Measurement> msm = new Gson().fromJson(json, measurementListType);

但这会产生错误

  

预计BEGIN_ARRAY但是BEGIN_OBJECT

如果JSON只是一个例子,它可以有任意数量的对象,但它们都必须遵循相同的结构。我怎样才能将它们解析成List?非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

对于那个你显示为对象数组的JSON,它需要被方括号括起来,如下所示:

[{
    "Temperature": {
        "Name": "Temperature",
        "Value": "26.19",
        "Unit": "C"
    },
    "Humidity": {
        "Name": "Humidity",
        "Value": "29.38%",
        "Unit": "%"
    }
}]

从那里你可以在数组中有一个或多个对象。