我应该把json字符串解析成json对象还是直接操作字符串

idfiyjo8  于 2023-05-23  发布在  其他
关注(0)|答案(2)|浏览(236)

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

{"number": "1234567"}

如果我必须在最后加上000

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

我将使用Jackson将其解析为Json对象或POJO
我知道对Json对象或POJO的可读性透视解析要好得多,但我对性能很好奇。在这种情况下,如果我直接操作json字符串,我必须使用regex提取number属性,并在末尾添加000,这比如果有大量数据的话解析到Json Object要昂贵得多?因为字符串对象基本上创建了一个新的字符串对象?

编辑:基于@Itai Steinherz的链接,我也做了一个JS的benchmark,json parse更好https://jsbench.me/93jr1w6k5b/1

0mkxixxg

0mkxixxg1#

由于我不太熟悉Java中的JSON解析/操作,我将比较JavaScript中的相同操作(我更有经验)。
比较使用基本正则表达式和.replace以及使用JSON.parseJSON.stringify,结果是使用JSON.parse慢了一小部分(精确地说是4.37%)。
但是,我认为性能的提高并不值得,我总是倾向于使用可读性更强、可维护性更高的代码(JSON.parse方法),而不是更高性能的代码(.replace方法)。
请参阅我使用的完整基准测试here

klr1opcd

klr1opcd2#

我只使用正则表达式。
我猜想解析器正在使用某种形式的模式匹配,或者很可能是字符流上的for循环。

\"number\":\s+\"(\d+)\"

您可以参考RFC 8259以获得关于JSON语法和语法的完整BNF。

相关问题