【问题标题】:Best practice to check contains key and check for null/empty in JSON?检查包含密钥并检查 JSON 中的空/空的最佳实践?
【发布时间】:2020-01-15 08:45:04
【问题描述】:

我将收到以下对我的服务的 JSON 请求。

{
  "city" : "Hyderabad",
  "state" : "Telangana",
  "country" : "India"
}

有时在请求中,我可能无法获得城市字段或城市字段可能为空,这不是预期的。所以,我正在通过以下方式处理它:

payload 是我的请求 JSON。

if ( payload.has("city") && !payload.get("city").equals("") )

我正在以上述方式处理它。但问题是,如果我再次添加新的强制,那么我需要再添加两个条件:

if ( payload.has("city") && !payload.get("city").equals("") && payload.has("newKey") && !payload.get("newKey").equals("") )
  1. 检查密钥是否可用。
  2. 检查值是否不为空。

    是否有解决此问题的最佳做法?

【问题讨论】:

  • 你肯定要用request().body().asJson(),但是你提到了request().body().asFormUrlEncoded()的方法
  • 分享你的控制器代码
  • @Rajat 是的。我正在使用 JsonNode 有效负载 = request().body().asJson();获取请求对象。

标签: java playframework jackson playframework-2.2 jsonnode


【解决方案1】:

我会将 JSON 负载反序列化为一个对象,然后您可以随意使用 getter 的组合。

MyObj toValue = mapper.readValue(parser, MyObj.class);

如果您想坚持原来的方法,我会创建一些辅助方法以使其更具可读性:

private boolean hasCity(String payload) {
   return payload.has("city") && !payload.get("city").equals("");
}

【讨论】:

  • 你说的都是真的。但我现在发现了这个。 json-schema.org/implementations.html 这将有助于 JSON 中的任何类型的验证。它也有很大的支持。检查一次。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-15
  • 1970-01-01
  • 2018-01-10
  • 1970-01-01
  • 2011-06-04
  • 1970-01-01
相关资源
最近更新 更多