通常我会将一个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
2条答案
按热度按时间0mkxixxg1#
由于我不太熟悉Java中的JSON解析/操作,我将比较JavaScript中的相同操作(我更有经验)。
比较使用基本正则表达式和
.replace
以及使用JSON.parse
和JSON.stringify
,结果是使用JSON.parse
慢了一小部分(精确地说是4.37%)。但是,我认为性能的提高并不值得,我总是倾向于使用可读性更强、可维护性更高的代码(
JSON.parse
方法),而不是更高性能的代码(.replace
方法)。请参阅我使用的完整基准测试here。
klr1opcd2#
我只使用正则表达式。
我猜想解析器正在使用某种形式的模式匹配,或者很可能是字符流上的for循环。
您可以参考RFC 8259以获得关于JSON语法和语法的完整BNF。