使用Gson从JSON中删除空集合
我想使用gson删除具有空集合或空值的属性。
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,我检查文档,那里没有任何方法……
请提出任何建议。
非常感谢读这篇文章!
要遵循的步骤:
- 使用Gson#fromJson()将JSON字符串转换为
Map
- 迭代地图并从地图中删除
null
或空ArrayList
的条目。 - 使用Gson#toJson()从最终地图返回JSON字符串。
注意:使用GsonBuilder#setPrettyPrinting()配置Gson输出适合页面的Json以进行漂亮的打印。
示例代码:
import java.lang.reflect.Type; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; ... Type type = new TypeToken
输出;
{ "idPeriodo": 121.0, "codigo": "2014II", "activo": false, "tipoPeriodo": 1.0, "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.0 }