java - 在不反序列化的情况下从 JSON 字符串中的任何位置删除键

标签 java json jackson gson

如果不反序列化和重新序列化以下深层嵌套的 JSON 字符串(如果可能的话),如何从任何嵌套级别删除名称为“REMOVEME”的任何键?

尝试过:

不情愿地尝试反序列化为 JsonObject/LinkedHashMap 以在有问题的键上使用 node.remove(e.getKey()) 遍历结构,但是Gson会抛出并发修改异常,而Jackson需要全反序列化。

之前:

{
    "a": {
        "REMOVEME" : "unwanted",
        "b": {
            "REMOVEME" : "unwanted",
            "c": {
                "d": {
                    "REMOVEME" : "unwanted",
                    "something": "default",
                    "e": {
                        "f": {
                            "REMOVEME" : "unwanted",
                            "g": {
                                "REMOVEME" : "unwanted",        
                                "h": {
                                    ... ,

之后:

{
    "a": {
        "b": {
            "c": {
                "d": {
                    "something": "default",
                    "e": {
                        "f": {
                            "g": {
                                "h": {
                                    ... ,

最佳答案

我不确定您尝试从节点中删除属性的方式,但可以删除我使用 jackson 完成的属性

String json = "{\n" + 
            "    \"a\": {\n" + 
            "        \"REMOVEME\" : \"unwanted\",\n" + 
            "        \"b\": {\n" + 
            "            \"REMOVEME\" : \"unwanted\"\n" + 
            "        }\n" + 
            "    }\n" + 
            "}";

    JsonNode node = objectMapper.readTree(json);
    ObjectNode node1 = (ObjectNode) node.get("a");

    node1.remove("REMOVEME");
    System.out.println(node1);  // {"b":{"REMOVEME":"unwanted"}}
    System.out.println(node);   // {"a":{"b":{"REMOVEME":"unwanted"}}}

关于java - 在不反序列化的情况下从 JSON 字符串中的任何位置删除键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58020133/

相关文章:

java - 遍历 hashmap 键并进行比较

java - 在树中搜索特定值

java - Jackson ObjectMapper 数组中的 JSON 空指针异常

java - 如何创建适当的 POJO 来提供 JSON 响应?

java - 模拟在测试方法内创建的返回值(这是一个对象)

java - Log4J SocketAppender 吞下来自远程客户端的调试信息

javascript - d3.js: parent 的大小= child 的大小之和

python - 如何提高数据转json格式的性能?

java - 如果将特定类型的对象序列化为 JSON 作为对象,如何从 Java 中的 JSON 反序列化该对象?

java - moshi 序列化支持,如 @jsonunwrapped