【问题标题】:Returning an empty "content" array when the page has no elements当页面没有元素时返回一个空的“内容”数组
【发布时间】:2017-10-27 06:12:09
【问题描述】:

来自AbstractRepositoryRestController#entitiesToResources 来源:

if (page.getContent().isEmpty()) {
    return pagedResourcesAssembler.toEmptyResource(page, domainType, baseLink);
}

当页面没有元素时,Spring Data REST 会在 "content" 节点中放入一个包含无用信息的对象(在我看来),例如:

"content": [
    {
        "relTargetType" : "my.company.ClassName",
        "collectionValue" : true,
        "value" : [ ]
    }
] 
  1. 提供该信息的想法/目的是什么?
  2. page.getContent().isEmpty()"content": []时有什么方法可以返回一个空数组?
  3. 如果不可能,那么客户端应该如何处理这种意外格式?

他们解析content 对其进行迭代,并将每个元素映射到某个域实体。由于它不是域实体,因此它们失败了。获取第一个元素并检查是否存在某些特定字段(例如 relTargetType)看起来很脏,不是吗?

【问题讨论】:

  • 你解决了吗?如果您有解决方案,也会帮助我!谢谢!

标签: java spring spring-mvc spring-data hal-json


【解决方案1】:

这是我尝试过的...

import java.util.ArrayList;
import java.util.List;

import org.json.simple.JSONObject;

public class TEST {

    public static void main(String[] args) {
        String nullStr = null;
        List<String> nullListOrArray = null;
        List<String> emptyListOrArray = new ArrayList<>();

        JSONObject json = new JSONObject();
        json.put("nullStr", nullStr);
        json.put("nullListOrArray", nullListOrArray);
        json.put("emptyListOrArray", emptyListOrArray);

        System.out.println(json.toString());
    }

}

Json 字符串输出:{"nullStr":null,"nullListOrArray":null,"emptyListOrArray":[]}

【讨论】:

  • 抱歉,和问题有什么关系?
  • 你问过如何返回空数组,所以使用列表而不是数组并初始化为新列表并将其返回为空
  • 当条件特定(页面没有元素)时,我在询问 Spring Data 序列化程序如何做到这一点
猜你喜欢
  • 1970-01-01
  • 2014-08-20
  • 2019-02-01
  • 2017-08-18
  • 1970-01-01
  • 2018-12-20
  • 1970-01-01
  • 2019-08-22
  • 2018-12-15
相关资源
最近更新 更多