我要使用gson移除具有空集合或null值的属性。
Aiperiodo periodo = periodoService();
//periodo comes from a service method with a lot of values
Gson gson = new Gson();
String json = gson.toJson(periodo);
我打印了json并得到了这个:
{"idPeriodo":121,"codigo":"2014II",
"activo":false,"tipoPeriodo":1,
"fechaInicioPreMatricula":"may 1, 2014",
"fechaFinPreMatricula":"jul 1, 2014",
"fechaInicioMatricula":"jul 15, 2014",
"fechaFinMatricula":"ago 3, 2014",
"fechaInicioClase":"ago 9, 2014",
"fechaFinClase":"dic 14, 2014",
"fechaActa":"ene 15, 2015",
"fechaUltModificacion":"May 28, 2014 12:28:26 PM",
"usuarioModificacion":1,"aiAvisos":[],
"aiAlumnoCarreraConvalidacionCursos":[],
"aiAlumnoMatriculas":[],"aiMallaCurriculars":[],
"aiAlumnoCarreraEstados":[],"aiAdmisionGrupos":[],
"aiMatriculaCronogramaCabeceras":[],
"aiAlumnoCarreraConvalidacions":[],
"aiHorarioHorases":[],"aiAsistencias":[],
"aiAlumnoPreMatriculas":[],
"aiAlumnoMatriculaCursoNotaDetalles":[],
"aiOfertaAcademicas":[],"aiTarifarios":[]}
例如,对于那个json,我不想拥有集合aiAvisos,有一种方法可以从json中删除它。我正在处理很多集合,实际上这里我展示了一个,我真的需要从json中删除这些集合。
我需要这样的东西:
{"idPeriodo":121,"codigo":"2014II",
"activo":false,"tipoPeriodo":1,
"fechaInicioPreMatricula":"may 1, 2014",
"fechaFinPreMatricula":"jul 1, 2014",
"fechaInicioMatricula":"jul 15, 2014",
"fechaFinMatricula":"ago 3, 2014",
"fechaInicioClase":"ago 9, 2014",
"fechaFinClase":"dic 14, 2014",
"fechaActa":"ene 15, 2015",
"fechaUltModificacion":"May 28, 2014 12:28:26 PM",
"usuarioModificacion":1}
我试着将集合设置为null,我检查了文档,那里也没有方法...
请提出建议。
谢谢你读了这篇文章!
3条答案
按热度按时间yb3bgrhw1#
步骤如下:
Map<String,Object>
null
或空ArrayList
或Map
的条目。**注意:**使用GsonBuilder#setPrettyPrinting()配置Gson以输出适合页面的Json,从而实现漂亮的打印效果。
样本代码:
输出;
pieyvz9o2#
我在Kotlin中尝试了一个@Braj的解决方案,想法是将JSON转换为Map,删除null和空数组,然后将Map转换回JSON字符串。
但它有几个缺点。
1.它只能处理没有嵌套的简单POJO(没有内部类、类列表)。
1.它将数字转换为双精度数(因为
Object
不能被识别为int
)。1.从String转换为String会浪费时间。
或者,您可以尝试使用
Moshi
而不是Gson
,请参阅Broken server response handling with Moshi。几天后,我克服了复杂JSON的第一个问题。
用法:
对于那些想要使用@Braj解决方案的人,这里有一个Kotlin中的代码。
0pizxfdo3#
我有一段代码可以处理不同结构的数组或对象,并递归地删除“空集合或空值”。它可以处理String而不是直接处理Gson。如果不是很关键,它可以帮助你。
您的代码将是:
...