如何用Groovy的JsonSlurper移除JSON中的eventLogs字段?
Groovy移除JSON中的eventLogs字段解决方案
方法一:直接操作解析后的Map对象
JsonSlurper解析顶层为对象的JSON时,返回的是LinkedHashMap实例,直接调用Map的remove()方法就能删除指定键:
import groovy.json.JsonSlurper import groovy.json.JsonBuilder def jsonSlurper = new JsonSlurper() // 解析JSON字符串为Map def jsonMap = jsonSlurper.parseText(db.get(id).content().toString()) // 移除"eventLogs"键值对 jsonMap.remove("eventLogs") // 将修改后的Map转回格式化的JSON字符串 def resultJson = new JsonBuilder(jsonMap).toPrettyString()
方法二:过滤生成新Map(不修改原对象)
如果不想改动原解析后的Map,可以用findAll过滤掉不需要的字段,生成新Map后再转JSON:
import groovy.json.JsonSlurper import groovy.json.JsonBuilder def jsonSlurper = new JsonSlurper() def jsonMap = jsonSlurper.parseText(db.get(id).content().toString()) // 过滤掉"eventLogs"字段,生成新Map def filteredMap = jsonMap.findAll { key, _ -> key != "eventLogs" } // 转成JSON字符串 def resultJson = new JsonBuilder(filteredMap).toPrettyString()
补充说明
你之前没找到remove()方法是因为忽略了JsonSlurper解析后的对象本质是Map,所以Map的所有标准方法(包括remove、findAll等)都可以直接使用,不需要额外的JSON专用方法。
内容的提问来源于stack exchange,提问作者deewreck
相关产品推荐
相关产品推荐

