这可能是一个奇怪的问题,因为它与JSON字符串本身有关,而不是它们所代表的对象。给定一个“漂亮打印”的JSON字符串(表示任何可JSON编码模型),如何将其重新格式化为“紧凑”格式?
我的第一反应是不将其视为JSON,而只是一个字符串,然后使用正则表达式删除重复空格、删除换行符等,但这不是上下文感知的,因此如果您没有适当地测试是否在引号内,它会影响JSON的键和值部分。
我的下一个想法是尝试从JSON构造一个对象,但是由于没有要转换的类型,我不确定如何做到这一点,除非手动将值解析为“ANY”,然后测试它们是否为数组,如果是,则递归进入其中,重复此过程。然后,一旦我获得最终对象,就以紧凑形式序列化结果。但是,那似乎太过于繁琐了。
是否有更简单的方法来完成这个任务?如果需要,我们正在使用Swift 4。
我的第一反应是不将其视为JSON,而只是一个字符串,然后使用正则表达式删除重复空格、删除换行符等,但这不是上下文感知的,因此如果您没有适当地测试是否在引号内,它会影响JSON的键和值部分。
我的下一个想法是尝试从JSON构造一个对象,但是由于没有要转换的类型,我不确定如何做到这一点,除非手动将值解析为“ANY”,然后测试它们是否为数组,如果是,则递归进入其中,重复此过程。然后,一旦我获得最终对象,就以紧凑形式序列化结果。但是,那似乎太过于繁琐了。
是否有更简单的方法来完成这个任务?如果需要,我们正在使用Swift 4。
{"value":"This is a test"}
将变成{"value":"Thisisatest"}
。但你说这种方法行不通。 (顺便说一句:出于这个原因,你可能想要删除这段代码,这样你就不会被踩了,从而影响你的声誉。这里的人并不总是很友善。)另外,你可能想把这样的东西放在一个JSONHelper
类中,而不是扩展String
,因为扩展应该对任何实例都有意义,而不是像这里的 JSON 一样只针对特定用例。这只是我的个人意见,但它已经为我服务了很好,并保持了 API 的清晰度。 - Mark A. DonohoeJSONHelper
的想法。我很新于 Swift,来自 PHP,但我主要只是通过 TDD 进行开发,并构建足够使测试通过的内容。然后再进行重构。目前我的extension
甚至在测试文件中。我会将其移动到更深的路径下,并可能会为其创建一个类。关于声誉,不用担心。不需要批准。我会尝试自己解决 :D - godbout