首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Jackson覆盖JsonNode

用Jackson覆盖JsonNode
EN

Stack Overflow用户
提问于 2015-09-08 18:31:38
回答 1查看 685关注 0票数 1

我使用Jackson流api读取json文件,如下所示:

代码语言:javascript
复制
// Go through json model and grab needed resources.
            JsonFactory jsonfactory = new JsonFactory();
            JsonParser jp = jsonfactory.createParser(fis);
            JsonToken current;
            current = jp.nextToken();
            ObjectMapper mapper = new ObjectMapper();

            if (current != JsonToken.START_OBJECT) {
                System.out.println("Error: root should be object: quiting.");
                return null;
            }
            while (jp.nextToken() != JsonToken.END_OBJECT) {
                String fieldName = jp.getCurrentName();
                // move from field name to field value
                if ("Field1".equals(fieldName)) {
                    jp.nextToken();
                    JsonNode json = mapper.readTree(jp);
                    //Manipulate JsonNode
                    /*Want to write back into json file in place of 
                     old object with manipulated node*/
                } 
                else {
                    jp.skipChildren();
                }
            }

从上面的代码中,我基本上是在解析json文件,直到找到我想要的字段,然后我将其读入JsonNode对象中,然后遍历这个JsonNode对象并操作与它相关的一些数据。我的问题是,是否有办法从json文件中删除该节点,并将新创建的POJO写入具有相同字段名的文件中,而不是旧的?我在网上找到的所有关于它的内容都涉及到将整个json文件读入JsonNode中,这是我想要避免的,因为这个文件可能相当大。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-08 18:37:58

对这样的文件进行就地编辑通常非常复杂;一种更简单的方法是创建一个新的临时文件,大多数情况下,只需复制正在编写的内容,直到达到修改新文件的条件为止。

最后,您可以删除原始文件,并将临时文件重命名为“替换”它;不过,除非磁盘空间有问题,否则我个人喜欢将原始源保留在附近(特别是在自动系统中)以进行故障排除。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32464859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档