为了账号安全,请及时绑定邮箱和手机立即绑定

JSON 值类型需要严格定义吗?

JSON 值类型需要严格定义吗?

慕村225694 2021-12-18 15:16:37
我遇到了一个 API,它为“fieldValue”返回不同类型的值,如下所示:{    "id" : 123,    "fieldType" : "text",    "fieldValue" : "some test"}{    "id" : 456,    "fieldType" : "checkbox",    "fieldValue" :     [        {            "checkboxId" : 1,            "name" : "Homer"        },        {            "checkboxId" : 2,             "name" : "Marge"        }    ]}{    "id" : 789,    "fieldType" : "Select",    "fieldValue" : {        "selectId" : 3,        "value" : "Lisa"    }}我正在使用 GSON,它不喜欢“fieldValue”可以是字符串、对象或数组这一事实。我已经编写了自定义解串器来解析它。我的问题是 JSON 规范是否允许 JSON 对象具有松散定义的值类型,这意味着 fieldValue 类型可以是字符串、对象数组或对象?
查看完整描述

2 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

JSON规范只提到了JSON对象的语法,而不是语义。所以解析器不会检查给定的值应该是 A 类型还是 B 类型。它会读取任何可用的值,如果语法被破坏,它将报告错误。由您的应用程序来验证内容并做出相应的反应。


查看完整回答
反对 回复 2021-12-18
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

不,它甚至有时可能是一个好政策。JSON 规范本身并没有说明 JSON 中呈现的对象是什么。这是 API 规范的责任。

您拥有的 API 似乎依赖于fieldType我猜您用来进行自定义反序列化的鉴别器字段。

这也是使用的策略,RuntimeTypeAdapterFactory在您的情况下也可能是很好的解决方案。


查看完整回答
反对 回复 2021-12-18
  • 2 回答
  • 0 关注
  • 244 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号