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

如何从来自api响应的json字符串构造对象列表?

贺善
2023-03-14

以前在这里可能会问过类似的问题,但我运气不好,我想知道如何从json字符串下面提取特定对象,如user,然后构造ArrayList。但是,有一个转折,users下面的属性之一是一个随机数,可以是任何东西!!!

<code>{
    "_links": {
    },
    "count": {
    },
    "users": {
        "123321": { //*Is a random number which can be any number
            "_links": {
            },
            "user": {
                "id": "123321",
                "name": "...",
                "age": "...",
                "address": ""
                ..
            }
        },
        "456654": {
            "_links": {
            },
            "user": {
                "id": "456654",
                "name": "...",
                "age": "...",
                "address": ""
                ...
            }
        }
        ...
    },
    "page": {
    }
}
</code>
@JsonIgnoreProperties(ignoreUnknown = true) // Ignore any properties not bound here
public class User {
    private String id;
    private String name;
    //setter:getter
}
List<User> users = resulted json transformation should return a list of users!!

你知道我该如何做到这一点吗?请最好使用Jackson JSON解析器/或者GSON?

共有1个答案

年嘉禧
2023-03-14

由于用户键是随机的,您显然不能将它们映射到命名的Java字段。相反,您可以将顶层对象解析为映射,然后手动拉出用户对象。

public class UserWrapper {
    private User user;
    public User getUser() { return user; }
}

public class Root {
    private Map<String, UserWrapper> users;

    public List<User> getUsers() {
        List<User> usersList = new ArrayList();
        for (String key : map.keySet()) {
            UserWrapper wrapper = map.get(key);
            usersList.add(wrapper.getUser());
        }

        return userList;
    }
}

Root root = parseJson();
List<User> users = root.getUsers()

希望能有所帮助!

 类似资料:
  • 问题内容: 我有一个bse64encoded字符串,来自外部源(Android商店)的公钥,我需要使用它来验证签名内容。如何将字符串转换为java.security.PublicKey接口的实例。如果这有所作为,我使用Java 6。 密钥是(可能)使用标准的Java库而不是有弹性的城堡生成的(它来自远程团队,所以我不确定)。他们的示例代码说使用Security.generatePublicKey(

  • 我有下面的班级结构。 问题1:方法将对象作为参数并返回字符串,它只是返回一个空字符串对象,而不是设置字符串的属性并返回它。为什么?如何返回对象的属性? 问题2:当map方法的参数名为时,它使用类中的属性生成实现,否则只生成空的对象。我很惊讶地发现mapstruct生成的不同实现也取决于参数名。有什么解释吗? 注意:对象在另一个对象中用作属性。在那里我需要上面提到的行为。现在我是这样管理的。@map

  • 服务代码供大家参考, 上面的代码只返回值,而不返回相应的列名。

  • 问题内容: 我在列表中有一个字符串路径集合,例如[“ x1 / x2 / x3”,“ x1 / x2 / x4”,“ x1 / x5”]。我需要从该列表构造一个树状结构,可以对其进行迭代以获得漂亮的打印树。像这样 有什么想法/建议吗?我认为可以通过处理字符串列表来首先解决该问题。编辑:选择的正确答案是一种优雅的实现,其他建议也很好。 问题答案: 遵循可访问树的幼稚实现的实现: 访客模式的界面: 访

  • 问题内容: 我是后端代码的新手,我正在尝试创建一个将对我的JSON字符串进行响应的函数。我目前有一个例子 这基本上只是打印字符串“应该以JSON形式出现的随机数”。我要执行的操作是使用任何数字的JSON字符串进行响应。我需要放置其他内容类型吗?该函数应该将该值传递给客户端的另一个用户吗? 谢谢你的帮助! 问题答案: 在Express中使用res.json: 或者:

  • 问题内容: 这是我的JSON数组:- 我的String对象中有这个。现在,我想将其转换为Java对象并将其存储在Java对象列表中。例如在学生对象中。我正在使用下面的代码将其转换为Java对象列表:- 我的清单课程是:- 我的学生对象是:- 我在这里想念什么吗?我收到以下异常消息:- 问题答案: 您要Jackson解析一个。告诉它解析一个(学生)。由于是通用的,因此通常会使用TypeReferen