对损坏的 JSON 说不 – Daniel Lemire 的博客

  • JSON 简介:JSON 即 JavaScript 对象表示法,是一种轻量级数据交换格式,因其简单性和与多种编程语言的兼容性,被广泛用于服务器和 Web 应用程序之间传输数据。
  • JSON 格式特点:具有简单语法,包含字符串、数字、布尔值、null、对象和数组等固定数据类型。字符串需转义特殊字符,数字需遵循有效格式。其格式在RFC 8259中有正式规定。
  • 解析和生成 JSON 的库:无论使用何种编程语言,都有现成的库可用于解析和生成有效 JSON。但不注意规范的人常写出导致畸形 JSON 的错误代码,如字符串处理不当。
  • 畸形 JSON 示例及解析错误:以{"key": "value\nda"}为例,在 Python 中,json.loads(json_string)会因无效控制字符而失败;在 JavaScript 中,JSON.parse(jsonString)会出现语法错误;在 Java 中,使用 jackson 解析也会报错;在 C#中,JsonDocument.Parse(jsonString)同样会出错。
  • 技术债务概念:畸形 JSON 文档并非真正的 JSON,这种因容纳有问题的系统而不修复导致的妥协或次优解决方案,即技术债务,会在软件开发中积累,影响系统的长期维护和演进。为避免技术债务,系统应拒绝无效 JSON。
阅读 11
0 条评论