求助:解决jsbeautifier输出含无效负数的JSON问题的方案
求助:解决jsbeautifier输出含无效负数的JSON问题的方案
嘿,我刚好之前也踩过这个坑,给你几个可以尝试的方向:
调整美化配置参数:虽然你说翻了源码没头绪,但可以再深挖下
jsbeautifier的配置项,比如和换行控制相关的preserve_newlines、max_preserve_newlines,或者有没有隐藏的数字格式控制参数?比如把wrap_line_length设置得极大,强制不让列表元素换行,说不定能绕过这个把负号和数字拆分行的逻辑。临时降级规避:如果这个bug是在1.15.1版本才出现的,你可以试试降级到更早的稳定版本,比如1.14.x系列,说不定那个版本还没引入这个负号拆分的问题。不过降级前记得确认低版本会不会影响你用到的其他功能。
给源码打轻量补丁:要是不想降级,其实可以给本地安装的
jsbeautifier打个小补丁。找到负责处理数字token或者格式化输出的函数,修改其中的判断逻辑,让负号和后面的数字被当作一个整体处理,不会被拆分换行。你可以在Python的site-packages目录下找到jsbeautifier的源码文件夹,定位到处理数字的模块,加个简单判断:当检测到负号开头的数字token时,强制不进行换行拆分。
如果上面的方法都走不通,那确实只能退而求其次用后处理方案了——写个简单的正则替换就能搞定,比如用正则把所有单独换行的负号和后面的数字合并,代码量很小,也能保证输出的JSON完全合规。
备注:内容来源于stack exchange,提问作者Robert Dodier
相关产品推荐
相关产品推荐

