客户机如何知道JSON Response的数据类型
在使用现有的REST服务开发客户机应用程序时,我可以选择使用JSON或XML响应。XML响应由带有模式信息的XSD文件描述 通过这些XML模式,我可以确定某个结果必须是什么数据类型,客户机可以在向用户呈现数据时,或者在客户机要求用户更改属性时使用这些信息。(顺便说一句,如何退出是另一个问题,因为我找不到任何支持XSD模式的XML多平台Delphi实现……但正如我所说的:这是另一个问题) 另一种方法是使用JSON响应类型,但是客户端无法确定属性的特定数据类型,因为所有内容都是作为字符串发送的 客户机如何知道这些属性之一是枚举类型的索引、整数、数量或通过ID对另一个对象的引用?(这些只是例子)客户机如何知道JSON Response的数据类型,json,xml,rest,delphi,xsd,Json,Xml,Rest,Delphi,Xsd,在使用现有的REST服务开发客户机应用程序时,我可以选择使用JSON或XML响应。XML响应由带有模式信息的XSD文件描述 通过这些XML模式,我可以确定某个结果必须是什么数据类型,客户机可以在向用户呈现数据时,或者在客户机要求用户更改属性时使用这些信息。(顺便说一句,如何退出是另一个问题,因为我找不到任何支持XSD模式的XML多平台Delphi实现……但正如我所说的:这是另一个问题) 另一种方法是使用JSON响应类型,但是客户端无法确定属性的特定数据类型,因为所有内容都是作为字符串发送的 客户
我认为客户端不应该包含关于响应结构的“硬编码”信息,或者我的假设是错误的?JSON没有XML那样的富类型系统,JSON没有XML那样的模式系统来描述枚举和引用。但是JSON只有很少的数据类型,JSON的一般格式是根据任何给定值使用的数据类型进行自我描述的(有关更多详细信息,请参阅官方文件):
"fieldname": "fieldvalue"
"fieldname": 12345
"name": true
"name": null
"fieldname": { ... object data ... }
"fieldname": [ ... array data ... ]
true
或false
,不带引号:
"fieldname": 12345
"name": true
"name": null
null
,不带引号:
"fieldname": 12345
"name": true
"name": null
除此之外的任何操作都需要客户机对正在发送的数据有外部知识(如XML中的模式,因为XML本身根本不描述数据类型)。JSON不像XML那样具有丰富的类型系统,JSON没有像XML那样的模式系统来描述枚举和引用。但是JSON只有很少的数据类型,JSON的一般格式是根据任何给定值使用的数据类型进行自我描述的(有关更多详细信息,请参阅官方文件):
"fieldname": "fieldvalue"
"fieldname": 12345
"name": true
"name": null
"fieldname": { ... object data ... }
"fieldname": [ ... array data ... ]
true
或false
,不带引号:
"fieldname": 12345
"name": true
"name": null
null
,不带引号:
"fieldname": 12345
"name": true
"name": null