java - 我应该将 json 字符串解析为 json 对象还是直接操作字符串

标签 java json string jackson

通常我将一个 json 字符串解析为 json 对象,而不是直接操作 json 字符串。例如,像这样的 json 字符串

{"number": "1234567"}

如果我必须在末尾添加000

...
{...,"number" : "1234567000",...}
....

我将使用 jackson 将其解析为 Json 对象或 POJO

我知道解析为 Json 对象或 POJO 的可读性透视图要好得多,但我对性能很好奇。这样的话,如果我直接操作json字符串,就得用regex提取number属性,最后加000,比数据多的时候解析成Json Object贵很多?因为字符串对象基本上创建了一个新的字符串对象?

编辑: 基于@Itai Steinherz 的链接,我也在 JS 中做了一个基准测试,它表明 json 解析更好 https://jsbench.me/93jr1w6k5b/1

最佳答案

由于我不太熟悉 Java 中的 JSON 解析/操作,所以我将比较 JavaScript 中的相同操作(我在这方面更有经验)。

比较使用带有 .replace 的基本正则表达式和使用 JSON.parse & JSON.stringify,结果是 使用JSON.parse 慢了一小部分(准确地说是 4.37%)。

但是,我不认为性能增益是值得的,我总是会选择更具可读性和可维护性的代码(JSON.parse 方法)而不是性能更高的代码(.replace 方法)。

查看我使用的完整基准测试 here .

关于java - 我应该将 json 字符串解析为 json 对象还是直接操作字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54238693/

相关文章:

json - 从输入流中读取时属性的类型不一样

javascript - 为什么 parseJSON 在服务器的以下响应中失败?

javascript - 使用 MySQL 和 PHP 的 ChartJs

JavaScript字符串压缩+PHP解压

java - 我正在尝试用java制作一个半高效的哈希表,但最终陷入了无限循环

JavaFX 8 : Missing caret in switch-editable ComboBox

用于聚合和滑动窗口实现的java框架

Java,使用Future从线程返回值

java - JAVA 中字符串中的搜索模式

c++ - 从 std::string 转换为 const char* 导致 valgrind 出现 'Syscall param socketcall.sendto(msg) points to unaddressable byte(s)' 错误