我有一些问题要反序列化遵循这种格式的Json数组:
[
{
"ChildList":[
{
"ChildList":[
],
"Id":110,
"Name":"Books",
"ApplicationCount":0
}
],
"Id":110,
"Name":"Books",
"ApplicationCount":0
}
]
Run Code Online (Sandbox Code Playgroud)
它基本上是一个类别数组,其中每个类别也可以有一个子类别列表,依此类推.我的班级模型看起来有点像这样:
public class ArrayOfCategory{
protected List<Category> category;
}
public class Category{
protected ArrayOfCategory childList;
protected int id;
protected String name;
protected int applicationCount;
}
Run Code Online (Sandbox Code Playgroud)
现在,Gson明显抱怨循环引用.有没有办法解析这个Json输入,因为我不能假设有多少级别的类别?提前致谢.
编辑: 为了防止有人遇到类似的问题,根据Spaeth的回答,我使用反射将解决方案改编为更一般的情况.唯一的要求是JSON数组表示的对象列表包装在另一个类中(如我的例子中的Category和ArrayOfCategory).使用以下代码应用于我的原始示例,您只需调用"deserializeJson(jsonString,ArrayOfCategory.class)",它将按预期工作.
private <T> T deserializeJson(String stream, Class<T> clazz) throws PluginException {
try {
JsonElement je = new JsonParser().parse(stream);
if (je instanceof JsonArray) {
return deserializeJsonArray(clazz, je);
} else {
return new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE).create().fromJson(stream, clazz);
}
} catch (Exception …Run Code Online (Sandbox Code Playgroud) 有没有办法告诉gradle idea插件在生成项目文件时使用自定义代码样式xml?
我总是可以将 xml 复制到“~/Library/Preferences/IntelliJIdea13/codestyles”中,然后在导入项目后更改代码样式,但我希望 gradle 插件在生成过程中自动为我执行此操作。
谢谢!