gson咋删除json串的某一属性啊

泳装魔王 2018-07-08 10:03:51
公司用的是谷歌的gson 我要调用别人的接口得到son数据 但是返回的json有个多余的属性 我想把他删除 用gson该怎么做啊
就是下面这个 我要得到data属性对应的json 然后再删除id属性 我写的错了 不会写 求教大神
public static void main(String[] args) {
String json = "{\n" +
" \"code\": \"1000\",\n" +
" \"success\": true,\n" +
" \"message\": \"操作成功\",\n" +
" \"data\": [\n" +
" {\n" +
" \"id\": \"p_1\",\n" +
" \"parentId\": \"0\",\n" +
" \"fullName\": \"安徽省\",\n" +
" \"shortName\": null,\n" +
" \"type\": \"0\"\n" +
" },\n" +
" {\n" +
" \"id\": \"p_2\",\n" +
" \"parentId\": \"0\",\n" +
" \"fullName\": \"北京市\",\n" +
" \"shortName\": null,\n" +
" \"type\": \"0\"\n" +
" },\n" +
" {\n" +
" \"id\": \"p_3\",\n" +
" \"parentId\": \"0\",\n" +
" \"fullName\": \"福建省\",\n" +
" \"shortName\": null,\n" +
" \"type\": \"0\"\n" +
" }]}";
JsonParser parser = new JsonParser();
JsonElement element = parser.parse(json);

JsonObject root = element.getAsJsonObject();

JsonObject f = root.get("data").getAsJsonObject().remove("id").getAsJsonObject();
DivisionDTO[] dos = new Gson().fromJson(root.get("data"), DivisionDTO[].class);
...全文
562 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
泳装魔王 2018-07-11
  • 打赏
  • 举报
回复
引用 5 楼 WintelZhao 的回复:
首先json字符串你包含换行符会正常解析吗?
你跟踪看下root对象属性是否正常。
然后你的data属性的值是一个数组,你要用json数据遍历来删除id属性。
root.get("data").getAsJsonObject().remove("id").getAsJsonObject(),这句是无效的,因为data数组无法找到id属性。
所以,怎么遍历着删除id属性啊
WintelZhao 2018-07-11
  • 打赏
  • 举报
回复
首先json字符串你包含换行符会正常解析吗?
你跟踪看下root对象属性是否正常。
然后你的data属性的值是一个数组,你要用json数据遍历来删除id属性。
root.get("data").getAsJsonObject().remove("id").getAsJsonObject(),这句是无效的,因为data数组无法找到id属性。

dev_pump 2018-07-10
  • 打赏
  • 举报
回复
先获取到data,然后遍历一下里面的对象:jsonObj.remove("id");
泳装魔王 2018-07-10
  • 打赏
  • 举报
回复
引用 2 楼 sinat_28029845 的回复:
jsonObject.discard("id"); 试下看看
gson没有这个方法啊大佬 你说的是阿里的fastjson吧
枯心人 2018-07-09
  • 打赏
  • 举报
回复
jsonObject.discard("id"); 试下看看
泳装魔王 2018-07-08
  • 打赏
  • 举报
回复
补充一点 我没法加注解忽略属性 因为我想删除的那个属性不在我的实体类里 公司所有的实体类都有一些共有的属性 这些属性都放在一个基本实体类里 所有的实体类都要继承这个类 所以这个基本类自然是不能修改的

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧