【问题标题】:Java REST service, get List<String> instead of List<Object>Java REST 服务,获取 List<String> 而不是 List<Object>
【发布时间】:2017-05-23 10:19:06
【问题描述】:

我在使用 REST 服务接收数据时遇到问题。 我通过 RequestBody 接收到一个包含许多属性的实体 A。其中之一是一组实体 B。

比方说:

Class A { 
Set<B> setOfB;
...
}

Class B {
Integer id;
String lastName;
}

如果我收到这样的 json:

{"setOfB": [{"id":1, "lastName":"lastName1"},{"id":2, "lastName":"lastName2"}]}

它会起作用的。顺便说一句,如果我把id去掉或者给2个id相同的对象,就会得到和我下面描述的问题一样的结果。

由于某种原因,我只能收到一个字符串列表:

{"setOfB": ["lastName1", "lastName1"]}

在这种情况下,我的实体将只有一个具有第一个值的集合(作为 B 实体)。

你知道我该如何处理:获取字符串列表并告诉 Java 每个字符串都是对象 A 的 lastName 属性吗?

【问题讨论】:

    标签: java string list rest object


    【解决方案1】:

    您可以修改您的 JSON 并将其更改为如下所示。

    {"setOfB": [{"lastName":"lastName1"},{"lastName":"lastName2"}]}

    它会起作用的。但是如果您发送 {"setOfB": ["lastName1", "lastName1"]} java 会将其视为字符串列表。而且它无法将 JSON 解析为对象。

    【讨论】:

    • 它给出了相同的结果。仅当我添加 id 属性且每个属性都具有不同的属性时它才有效(给每个属性 0 将不起作用)。我可以给出一个随机增加的值,但如果可能的话,我想避免这种情况......你认为无论如何都必须指出作为主键的属性......?难道没有别的办法吗……?
    • @Pushi - 为什么“setOfB”是一个集合,你能把它列出来吗?如果它意味着要设置而不是您检查对象的唯一性的基础。你重写了 equals() 方法吗?
    猜你喜欢
    • 2014-07-27
    • 1970-01-01
    • 2020-01-26
    • 2022-07-11
    • 2018-09-22
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    • 1970-01-01
    相关资源
    最近更新 更多