Rest 使用Gson和HAL(超文本应用程序语言)返回包含单个元素的数组

Rest 使用Gson和HAL(超文本应用程序语言)返回包含单个元素的数组,rest,gson,hal,Rest,Gson,Hal,我在使用(的Java库)和仅使用单个元素序列化_links部分中的链接列表时遇到问题。数组被序列化为对象,而不是具有单个链接的数组 例如: 我现在得到的是: { "year": 2008, "_embedded": { "items": { "_links": { "self": { "href": "/first_item" } } } } } 而不是: { "year": 2008,

我在使用(的Java库)和仅使用单个元素序列化_links部分中的链接列表时遇到问题。数组被序列化为对象,而不是具有单个链接的数组

例如: 我现在得到的是:

{
  "year": 2008,
  "_embedded": {
    "items": {
      "_links": {
        "self": {
          "href": "/first_item"
        }
      }
    }
  }
}
而不是:

{
  "year": 2008,
  "_embedded": {
    "items": {
      "_links": {
        "self": [
          {
            "href": "/first_item"
          }
        ]
      }
    }
  }
}
我用_嵌入式部分解决了同样的问题,但不能用links部分解决


谢谢

我使用解决方法解决了这个问题。我不使用@HalLink,而是使用一个代理临时类,该类包含所有层次结构,其实例名为“\u links”

因此,使用自定义Href对象列表,当它有一个链接时,我将通过一个元素返回预期的self属性as list

在所有HAL文档()中都说:​“如果您不确定链接是否应该是单数的,则假定它将是多个的”,并且“如果一个关系可能有多个链接共享同一个键,那么该值应该是一个链接对象数组”。
​通过这种方式,我不会破坏消费者处理JSON数组或对象的能力。

我可能会用这种方式调整消费者: