当前位置: 首页 > 知识库问答 >
问题:

REST API的JSON响应

平元明
2023-03-14

我用java制作了一个REST API,我有以下DTO。

@ApiModel(value = "testType", description = "Test type")
public class TestType
{
    private int type;
    private String typeName;
    private boolean isTypeSpecial;
    private boolean isTypeTrue;

    @JsonInclude(JsonInclude.Include.NON_ABSENT)
    private List<typeMasterDTO> typeMasterList;

    public TestType()
    {
    }

    @ApiModelProperty(example = "0", value = "Type", required = true)
    public int getType()
    {
        return type;
    }

    public void setType(int type)
    {
        this.type= type;
    }

    @ApiModelProperty(example = "Dragon", value = "Name of the typw",             required = true)
    public String getTypeName()
    {
        return typeName;
    }

    public void setTypeName(String typeName)
    {
        this.typeName= typeName;
    }

    @ApiModelProperty(value = "It is a special type", required = true)
    public boolean isTypeSpecial()
    {
        return isTypeSpecial;
    }

    public void setTypeSpecial(boolean isTypeSpecial)
    {
        this.isTypeSpecial= isTypeSpecial;
    }

    @ApiModelProperty(value = "It is a true type", required = true)
    public boolean isTypeTrue()
    {
        return isTypeTrue;
    }

    public void setTrueType(boolean isTypeTrue)
    {
        this.isTypeTrue= isTypeTrue;
    }

    @ApiModelProperty(value = "List of types")
    public List<typeMasterDTO> getTypeMasterList()
    {
        return typeMasterList;
    }

    public void setTypeMasterList(List<typeMasterDTO> typeMasterList)
    {
        this.typeMasterList= typeMasterList;
    }

}

在我的API类中,我从sql获取上述DTO的数据,并使用以下代码返回响应:

Response com.mmp.rest.AbstractResource.buildResponse(Response<?> response, ResponseMode mode)
[
      {
            "type": 1,
            "typeName": "New type",
            "typeMasterList": [
                {
                    "typeMaster": 0,
                    "typeMasterName": "Default"
                },
                {
                    "typeMaster": 1,
                    "typemasterName": "Custom"
                }
            ],
            "TypeTrue": false,
            "TypeSpecial": true
    }
]

所以我的疑虑是:

  1. 为什么对象列表在响应中排在第三位,尽管我在DTO中声明了它的最后一位?
  2. 为什么isTypeTrue和isTypeSpecial在输出中显示为TypeTrue和TypeSpecial?
  3. 尽管我首先声明了isTypeSpecial,但为什么isTypeTrue首先出现,而isTypeSpecial随后出现?
  4. 有什么方法可以让我了解buildResponse是如何工作的吗?

共有1个答案

阎自怡
2023-03-14
  1. 因为顺序不相关。在JSON级别上,它基本上是一个无序的键值映射。顺序对您或解析者都不重要。因为[...]是有序列表/数组,所以只有[...]中的内容才会保持其顺序。
  2. 布尔字段的getter命名有点特别,例如,请参见对于一个布尔字段,它的getter/setter的命名约定是什么?-是...就像常规getter的get...一样,因此会被剥离。
  3. 与%1相同。
  4. 是的,例如设置断点并使用IDE+调试器单步执行该方法--但查看代码可能并不有趣
 类似资料:
  • 我们尝试使用用户访问控制实现 RestAPI,其中相同的 URI 应为具有不同角色的两个用户返回不同的响应。比如说,对 URI 的响应(/resource/123) 如何根据角色隐藏每个属性。 隐藏用户不应访问的节点 问题:这会破坏响应结构。客户端可能会中断,因为预期的节点会被遗漏。 为该节点返回 null。 问题:这将破坏响应数据类型。因为“布尔”节点将具有空值。 返回该节点的默认值。 问题:这

  • 问题内容: NSData * jsonData 是包含JSON数据的http响应。 我得到了结果: 将数据编码为正确的字符串而不是“ \ uxxxx”之类的Unicode字符串的正确方法是什么? 问题答案: 如果您转换JSON数据 到(例如使用)并打印字典 那么你会得到输出 原因是该方法对所有非A​​SCII字符使用“ \ Unnnn”转义序列。但这仅是为了在控制台中 显示 ,字典是 正确的 !

  • 问题内容: 我正在尝试从基于Django的Web后端在Android中获得jSON响应。我得到的回应是 Android请求 Django Views代码 我不太确定,为什么我没有得到预期的jSON响应。手动点击网址后,我得到了预期的JSON响应 编辑1 我也尝试过这种方法 编辑2 我收到的错误是 HTTP 403请求 ,尝试发送发送的请求,因为该值未达到API调用 编辑3 我得到的HTTP响应为2

  • 我正在进行一个SpringBoot项目,该项目使用常规MVC机制来公开REST API。 在一个特定的GET API中,我得到了406HTTP响应。 下面是我的控制器方法的样子: AnalysisDetailResponse是使用Lombok创建的(在其他API的情况下,Lombok可以完美地工作) 我已经验证了整个响应对象的内容,它似乎是完美的。然而,响应总是406。 我需要JSON格式的响应,

  • 问题内容: 我使用一些GeoIP服务在页面上放置国家/地区标记,具体取决于国家/地区IP。我需要为网站上的所有页面缓存JSON响应。 将此代码放入: 是否可以将其缓存?-似乎不起作用。 或者使用HTML5 localStorage可能更好,但是我不确定该怎么做。 我也尝试了JSONCache插件,但是对我来说不起作用。 问题答案: 您可以这样使用localStorage: 演示 因此,在您的特定情

  • 我有一个严重的问题与Livewire从api响应传递数据到组件刀片文件。起初它加载良好,当我点击的时候。下拉列表会在下面抛出一个错误。 Livewire在尝试为[sign up]组件添加水合物时遇到损坏的数据。确保Livewire组件的[名称、id、数据]在请求之间未被篡改。 我有一个我正在加载的下拉列表,一开始它加载得很好,但当我从下拉列表中选择某个内容时,它抛出了那个错误。 下面是我的组件代码