使用GSON将JSONArray设置为POJO类中的String

时间:2015-09-25 06:20:53

标签: java android json gson json-deserialization

我有一个jsonarray,因为我创建了pojo类。现在,我想将jsonarray设置为一个字符串。当我这样做时,它会抛出The JsonDeserializer StringTypeAdapter failed to deserialize json object given the type class java.lang.String的错误。这个问题有所不同,因为我想将jsonarray设置为String所以,任何人都有任何想法吗?

3 个答案:

答案 0 :(得分:1)

Gson.toJson()返回一个String ..

所以喜欢..

String myArrayAsAString = gsonInstance.toJson(myJsonArray);

这是你的意思吗?

答案 1 :(得分:1)

你可以设置方法uself。     公共类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/

答案 2 :(得分:1)

假设您有一个productInfo数组:

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

然后你想获得productInfos'JsonArray的字符串表示形式:

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

productInfoJsonArray.getAsString();

我不完全确定你想要实现的目标,但我希望上面的代码片段有所帮助。