从JsonObject内的Json中移除键

我有一个JsonObject,如下所示

{“状态”:“活动”,“帐户”:{“电子邮件”:[email protected],“名称”:“测试”}

如何在java中使用类似于jsonObj.remove(“email”)的东西从JsonObject中删除Json键“email”及其值

如果我需要删除状态键,JsonObj.removev将为我工作JsonObj.remove(“状态”)

更新

还有一些背景,
这主要用于测试静止端点。在我的测试中,我使用生成器模式创建了与有效负载匹配的java对象,然后使用类似GsonBuilder的代码转换为Json

导入com.google.gson.GsonBuilder;
导入com.google.gson.JsonObject;
公共类JsonConvertor(){
公共静态JsonObject convertToJsonObject(对象负载){
GsonBuilder=新的GsonBuilder();
return(JsonObject)builder.setFieldNamingPolicy(FieldNamingPolicy.Policy)。
create().toJsonTree(有效载荷);
}}

若我需要删除我使用的一个必填字段,那个么在由上述函数创建的Json对象上使用JsonObj.remove(“key”)

如果Gson像Jackson(我想是这样),您必须首先从根对象中获取JsonObject“accounts”,然后删除成员“email”,例如:

jsonObj.getAsJsonObject(“账户”)。删除(“电子邮件”);

或者,也可能是首选方法,您可以将json对象映射到POJO(具有字段“status”、“accounts”和“accounts”的对象将指向另一个POJO),导航到accounts POJO并将“email”设置为null。然后将根POJO重新格式化为JSON,并应用一个忽略具有空值的字段的设置

编辑(回答评论中的问题):

简而言之,我不知道是否有内置的功能,但它应该是可行的

问题是,如果只提供email等键,可能会遇到多个键的情况,因此很难识别正确的键。因此,最好以accounts.email的形式提供密钥,并将“密钥”拆分为子表达式,然后使用部件遍历Json树,或者将Json转换为POJO,并使用某种表达式语言(例如Java EL或OGNL)遍历POJO

如果您想删除所有名为email的属性,只需遍历整个json树,检查是否有具有该名称的属性,如果有,请将其删除

发表评论