Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用GSON将JSONArray设置为POJO类中的字符串_Java_Android_Json_Gson_Json Deserialization - Fatal编程技术网

Java 使用GSON将JSONArray设置为POJO类中的字符串

Java 使用GSON将JSONArray设置为POJO类中的字符串,java,android,json,gson,json-deserialization,Java,Android,Json,Gson,Json Deserialization,我有一个jsonarray,为此我创建了pojo类。现在,我想将jsonarray设置为一个字符串。当我这样做时,它抛出了一个错误,即给定类型类java.lang.String,JsonDeserializer StringTypeAdapter无法反序列化json对象。这个问题是不同的,因为我想将jsonarray设置为字符串,所以有人知道吗?返回一个字符串 就像 String myArrayAsAString=gsonInstance.toJson(myJsonArray) 这就是你的意思吗

我有一个jsonarray,为此我创建了pojo类。现在,我想将jsonarray设置为一个字符串。当我这样做时,它抛出了一个错误,即给定类型类java.lang.String,JsonDeserializer StringTypeAdapter无法反序列化json对象。这个问题是不同的,因为我想将jsonarray设置为字符串,所以有人知道吗?

返回一个字符串

就像

String myArrayAsAString=gsonInstance.toJson(myJsonArray)


这就是你的意思吗?

你可以自己设置方法。 公共类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;
}
}    
@覆盖
公共书籍反序列化(最终JsonElement json、最终类型typeOfT、最终JsonDeserializationContext)
抛出JsonParseException{
final JsonObject JsonObject=json.getAsJsonObject();
final JsonElement jsonTitle=jsonObject.get(“title”);
最后一个字符串title=jsonTitle.getAsString();
最后一个字符串isbn10=jsonObject.get(“isbn-10”).getAsString();
最后一个字符串isbn13=jsonObject.get(“isbn-13”).getAsString();
final JsonArray jsonAuthorsArray=jsonObject.get(“authors”).getAsJsonArray();
final String[]authors=新字符串[jsonAuthorsArray.size()];
for(int i=0;i

假设您有一个productInfo数组:

List<ProductInfo> productInfos = new ArrayList<>();
// fill your productInfos, etc.
List productInfos=new ArrayList();
//填写产品信息等。
然后,您需要获取productInfos的JsonArray的字符串表示形式:

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

productInfoJsonArray.getAsString();
JsonArray productInfoJsonArray=(JsonArray)new Gson().toJsonTree(productInfos,
新的TypeToken(){
}.getType());
productInfoJsonArray.getAsString();

我不完全确定您想要实现什么,但我希望上面的代码片段能有所帮助。

您能包含一些代码吗?但是,我想将jsonarray设置为一个字符串变量。那么,我能做到吗?我把代码放在哪里了?我的意思是,当我的json出现时,我调用了它,
Gson-Gson=new-GsonBuilder().serializeNulls().create();ProductInfo item=gson.fromJson(response.toString(),POJO_Class.Class)
和我的POJO_类有getter和setter方法,但为此我必须创建单独的类,因为我的响应太长,并且它有4个以上的数组。那么,对于所有我必须创建的类,也许你应该提供json、POJO类以及你想要将jsonarray设置为字符串的位置