JSON将单个字符串解析为对象

时间:2016-07-14 15:32:07

标签: java json gson

有没有简单的方法来转换这个json:

{
    ...,
    "pictures": [
        "url1",
        "url2"
    ],
    ...
}

List<Picture> pictures

图片是:

class Picture{
      String url;
}

它不会像上面那样工作,因为我有一个例外,说

Expected BEGIN_OBJECT but was STRING

1 个答案:

答案 0 :(得分:1)

您需要为此实现自定义反序列化器。 应该看起来像这样(我没有尝试执行,但这应该让你知道从哪里开始,可能你的String中有一个Picture.class参数的公共构造函数

private class PictureDeserializer implements JsonDeserializer<Picture> {
  public Picture deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
      throws JsonParseException {
    return new Picture(json.getAsJsonPrimitive().getAsString());
  }
}

应该注册:

GsonBuilder gson = new GsonBuilder();
gson.registerTypeAdapter(Picture.class, new PictureDeserializer());