【问题标题】:Set JSONArray into String in POJO class using GSON使用 GSON 在 POJO 类中将 JSONArray 设置为 String
【发布时间】:2015-09-25 06:20:53
【问题描述】:

我有一个 jsonarray,为此我创建了 pojo 类。现在,我想将 jsonarray 设置为字符串。当我这样做时,它会引发 The JsonDeserializer StringTypeAdapter failed to deserialize json object given the type class java.lang.String 的错误。这个问题是不同的,因为我想把那个 jsonarray 设置成 String 所以,有人知道吗?

【问题讨论】:

标签: java android json gson json-deserialization


【解决方案1】:

Gson.toJson() 返回一个字符串..

所以喜欢..

String myArrayAsAString = gsonInstance.toJson(myJsonArray);

你是这个意思吗?

【讨论】:

  • 我把这段代码放在哪里了?我的意思是当我的 json 出现时我调用了这个,Gson gson = new GsonBuilder().serializeNulls().create(); ProductInfo item = gson.fromJson(response.toString(), POJO_Class.class); 和我的 POJO_Class 有 getter 和 setter 方法。
【解决方案2】:

你可以自己设置方法。 公共类 BookDeserializer 实现 JsonDeserializer {

@Override
public Book deserialize(final JsonElement json, final Type typeOfT, final JsonDeserializationContext context)
  throws JsonParseException {
final JsonObject jsonObject = json.getAsJsonObject();

final JsonElement jsonTitle = jsonObject.get("title");
final String title = jsonTitle.getAsString();

final String isbn10 = jsonObject.get("isbn-10").getAsString();
final String isbn13 = jsonObject.get("isbn-13").getAsString();

final JsonArray jsonAuthorsArray = jsonObject.get("authors").getAsJsonArray();
final String[] authors = new String[jsonAuthorsArray.size()];
for (int i = 0; i < authors.length; i++) {
  final JsonElement jsonAuthor = jsonAuthorsArray.get(i);
  authors[i] = jsonAuthor.getAsString();
}

final Book book = new Book();
book.setTitle(title);
book.setIsbn10(isbn10);
book.setIsbn13(isbn13);
book.setAuthors(authors);
return book;
}
}    

http://www.javacreed.com/gson-deserialiser-example/

【讨论】:

  • 但是为此我必须创建单独的类,因为我的响应太长了,而且它有超过 4 个数组。所以,我必须上课?
  • 也许你应该提供 json、POJO 类和你想将 jsonarray 设置为 String 的位置
【解决方案3】:

假设你有一个 productInfo 数组:

List<ProductInfo> productInfos = new ArrayList<>();
// fill your productInfos, etc.

然后你想得到productInfos的JsonArray的String表示:

JsonArray productInfoJsonArray = (JsonArray) new Gson().toJsonTree(productInfos,
            new TypeToken<List<ProductInfo>>() {
            }.getType());

productInfoJsonArray.getAsString();

我不完全确定您想要实现什么,但我希望上面的 sn-p 有所帮助。

【讨论】:

    猜你喜欢
    • 2019-10-14
    • 1970-01-01
    • 2011-05-05
    • 2023-03-12
    • 2019-12-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-02
    相关资源
    最近更新 更多