好奇的实例,其中gson
解析器可以将JSON字符串解析为String
,但是不能将该JSON字符串解析为它表示的原始对象。
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.util.ArrayList;
public class Reader {
public class Beta {
String beta1;
@Override
public String toString() {
return "{ beta1: " + this.beta1 + "}";
}
}
public class Alpha {
Beta beta;
@Override
public String toString() {
return "{" + "beta: " + beta.toString() + "}";
}
}
public static void main(String[] args) {
Gson gson = new Gson();
String example1 = "[[{beta:{beta1:beta2}}]]";
String json = gson.toJson(example1);
// this throws an error
ArrayList<ArrayList<Alpha>> dog = gson.fromJson(json, new TypeToken<ArrayList<ArrayList<Alpha>>>(){}.getType());
// this does not
ArrayList<ArrayList<Alpha>> dog1 = gson.fromJson("[[{beta:{beta1:beta2}}]]", new TypeToken<ArrayList<ArrayList<Alpha>>>(){}.getType());
}
}
答案 0 :(得分:1)
如果[[{readerme:{dumbme:meme}}]]
是针对您的List<List<Alpha>>
对象的正确格式的json,则不会序列化文字字符串[[{readerme:{dumbme:meme}}]]
。
使用字符串调用gson.ToJson将输出json格式的字符串。实际上,您的字符串[[{readerme:{dumbme:meme}}]]
将变为"[[{readerme:{dumbme:meme}}]]"
。请注意添加的引号。
我认为将json
变量的内容打印到控制台将帮助您理解我的意思。
由于此输出字符串是用json表示的字符串,因此它不再是List<List<Alpha>>
的正确方案