【发布时间】:2019-05-21 15:07:40
【问题描述】:
在我的 WebApplication 中,我必须检查来自 requestBody 的许多传入查询参数。为了不在每个方法中编写相同的代码,我想编写一个返回布尔值的函数。当接收到所有必需的参数并且 entrySet 的值不为 null 时,该方法应返回 true(否则为 false),我可以稍后在程序中使用传入的查询参数。
因此,我将所有传入参数打包到一个 HashMap 中。此外,我在该方法中添加了一个特定列表,该列表提供了检查所需的参数(键)。
queryParams 示例图:
Map queryParams = new HashMap();
queryParams.put("id", "1");
queryParams.put("name", "Jane");
queryParams.put("lastname", "Doe");
示例数组:
String[] keys = {"id", "name", "lastname"};
方法的最新版本:
public static Boolean checkRequestParams(Request request, String[] keys) {
Map params = (JsonUtil.fromJson(request.body(), HashMap.class));
Iterator it = params.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pair = (Map.Entry) it.next();
for (int i = 0; i < keys.length; i++) {
if (pair.getKey().equals(keys[i])) {
return true;
}
}
数组提供的键是客户端发送的 QueryParams。不,我想比较它们并检查 Hashmap 中的键是否等于数组中的给定键,以及 Map 中键的值是否不为空。
我尝试了很多变化。要么我得到了 nullPointerExceptions,要么我总是得到一个 null 返回。
【问题讨论】:
-
你使用
getValue()而不是getKey()有什么原因吗? -
不要使用原始类型并提供您作为输入传递的数据和您期望的数据。范围太广了。
-
谢谢,是的,这是一个错误,已修复。
-
这一切听起来就像是渴望成为 JSR-303 验证。
-
{"id, name, lastname"};应该是 {"id", "name", "lastname"}
标签: java arrays hashmap compare