java - JSON值类型是否需要严格定义?

标签 java json rest api gson

<分区>

我遇到过一个 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 类型可以是字符串、对象数组或对象?

最佳答案

JSON specification只提到JSON对象的语法,没有提到语义。所以解析器不会检查给定的值应该是类型 A 还是类型 B。它会读取任何可用的值,如果语法被破坏就会报告错误。验证内容并做出相应 react 取决于您的应用程序。

关于java - JSON值类型是否需要严格定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53054942/

相关文章:

web-services - REST 身份验证和 HMAC/私钥(我什么时候设置?)

java - 无法使用 Hibernate 更新实体

python - 使用 Python 的 JSONP Web 服务

json - 使用Swift从YouTube API解析JSON响应

REST API设计——通过ID加载创建资源

node.js - Controller 上的 Socket.IO

java - Neo4j 插件中 GraphDatabaseService 的使用

java - java中的常量含义

java - 首先按值然后按键对 map 进行排序

javascript - 在窗口中打开新页面时对象内容丢失