请不要因为我的要求而抨击我。我找不到任何可以帮助我理解这一点的信息。
我已经编程两年了,但我仍然从未使用过 JSON 或 XML。我可以用 JSON 或 XML 做什么,而我不能用数据库做什么?我们只是将它们用作配置文件吗?
XML 和 JSON 是通用的序列化格式。只要您想以简单的方式在应用程序之间交换数据,就可以使用它们。您不需要发明自己的文件格式。您可以使用标准化的基础设施(序列化程序、库)。
例如,您将如何将结构化数据(例如有关销售或客户的信息)发送给第 3 方?您需要就数据格式达成一致。XML 和 JSON 很方便。您可以轻松生成 JSON,其他开发人员将立即了解其结构并能够使用很少的代码对其进行反序列化。
虽然另一个答案基本上是正确的(两者都是数据交换的通用选项),但值得注意的是存在一些重要差异。XML 是为处理文档而构建的。JSON 用于描述对象。
因此,如果您必须编写一些将数据转储到文件的内容,并且文件在没有任何元数据(描述 mime 类型、字符编码或其他约定)的情况下传输, XML 可能是一种更好的方法,因为您可以嵌入必要的元数据数据中的数据使用适当的声明(和命名空间)。当涉及到“文档”时,这一点尤其重要:JSON 根本没有很好地描述语言环境的原语,也没有所有解析器都能理解的合理标准方法。因此,如果有人做了一些非常愚蠢的事情,比如将 UTF-8 编码的 JSON 字符串转换为 Shift-JIS,那么祝任何解析器都能以通用方式理解它。XML 解决了这个问题(它还提供语言支持)。
另一方面,如果您想要做的只是在高度受控的环境中交换一堆对象(即字符编码、语言等都是明确定义的参数),那么您不必担心会出现任意奇怪的情况-- 然后 JSON 提供了一种更紧凑的序列化格式,对于大多数程序员来说,它也(可能)更容易阅读。最后,JSON 特别适合 Web 应用程序,因为它本身就是有效的 JavaScript。在将 JSON 视为 JavaScript 代码的一部分时,使用类似的东西eval
,对于使用任意 JSON 来说不是一个好的安全实践;它可以帮助简化您确实可以完全控制的 Web 应用程序的任何前端的“启动和运行”阶段(您需要做的就是“评估”它,但对于必须使用的代码来说也是如此任意 JSON 这是一个糟糕的主意,因为这可能会使您暴露于其他站点以及您自己的站点的安全漏洞)。
作为一个真实的例子,我曾经在一个与 Ruby on Rails 服务器交互的 iOS 应用程序上工作。服务器有一个 SQL 数据库和许多应用程序的逻辑。服务器接受来自 iOS 客户端的请求,检索和操作相关数据,然后将结果呈现为 JSON,将其发送回客户端以用于任何用途。这是 Ruby 服务器应用程序向 Objective-C iOS 应用程序产生数据的一种简单方法。