(1)@SerializedName 的使用
场景:后台返回的字段 与 前端所需的字段不一致,如前端菜单控件接收的数据需要特定的字段名称
public class ResourceInfo {
private String resourceName;
private String resourceIcon;
private List<ResourceInfo> childList;
//忽略getter/setter
}
public class MenuTree {
//若有resourceName,resName,rname字段时,匹配为text字段;若存在多个,则选最后一个(即以 rname 值为准。)
@SerializedName(value = "resourceName", alternate = {"resName", "rname"})
private String text;
@SerializedName(value = "resourceIcon")
private String icon;
@SerializedName(value = "childList")
private List<MenuTree> nodes;
//忽略getter/setter
}
需要将List<ResourceInfo>
的数据转换成 List<MenuTree>
的数据,其中字段(resourceName
,resourceIcon
,childList
)依次替换成 (text
,icon
,nodes
)。可使用如下方法:
Gson gson = new GsonBuilder().create();
List<ResourceInfoVo> resourceList = resourceInfoService.getMenuList();
List<MenuTree> treeList = gson.fromJson( gson.toJson(resourceList),
new TypeToken<List<MenuTree>>() {}.getType());