首页 > 解决方案 > 在不解析的情况下将属性插入 JSON 字符串

问题描述

我有一个 JSON 字符串,我想向其中注入一个字段,最好不必解析 JSON。有什么好的方法可以做到这一点?主要优先事项是性能。

我能想到的可能的方法:

  1. 检查第一个非空白字符是否为,在字符串中直接{插入到它之后。"myField":"myValue",如果 JSON 已包含"myField"或数据没有属性,则会出现问题。
  2. 解析 JSON 树并正常插入值。易于检查现有 myField属性,但选择较慢。

有什么我没有想到的方法吗?可能是杰克逊特定的解决方案?

标签: javajsonjackson

解决方案


使用 Jackson 操作 JSON 文档应该不会对性能产生太大影响。只需使用 Jackson 树模型解析 JSON 文档:

ObjectMapper mapper = new ObjectMapper();
JsonNode tree = mapper.readTree(json);

执行您的操作,然后将树写回 JSON。


主要优先事项是性能。

根据 Donald Knuth 的说法,过早优化是万恶之源。这意味着在没有测量到的性能问题的情况下,您不应该优化,因为您认为您会获得性能提升。

可以执行一些明显的优化,但在可以测量之前,应避免任何不是非常清晰的优化。


推荐阅读