【问题标题】:Json integer value automatically converts to string valueJson 整数值自动转换为字符串值
【发布时间】:2016-05-05 06:36:57
【问题描述】:

当我发送带有整数值的 JSON 请求时,它会在 Java 端自动转换为字符串,其中接受字段为字符串类型。 我正在使用 Jersey Jackson API 进行 JSON 处理。 例如,

JSON 请求

{
   "executable":1
}

这里我将整数值发送到字符串类型的可执行变量。 但它接受整数值并将其转换为字符串。

我的要求是严格验证数据类型。

【问题讨论】:

  • 您正在发送一个 JSON 字符串。所以 JSON 中的所有内容都在 String 上。您可以在 JAVA 端将其转换为 int。
  • 在没有 JAVA 端显式类型转换的情况下,有什么方法可以进行这种验证吗?
  • 是的,您可以根据您的 JSON 创建一个实体,您可以使用 ObjectMapper(for eg) ,它将您的 json 转换为实体。无需使用任何转换。

标签: java json


【解决方案1】:

json 对象的所有值都是字符串。您需要自己投射。

Integer.valueOf(STRING_YOU_WANT_TO_CONVERT);

您也可以使用 JsonDeserializer。这里有一个例子:Error in Android JsonDeserializer when returning response

【讨论】:

  • 是的,但我需要验证发送的 json 字符串。
  • 嗯,您可以通过两种方式进行验证。按模式验证是什么意思?
  • 我的意思是,如果在 JSON 请求中传递了一个整数值,该整数值映射到 Java POJO 类中的字符串值,是否有办法使验证失败?
【解决方案2】:

最后我可以根据我的要求进行更改。 我的要求是针对 JSON 模式验证 JSON 请求。 确实 JSON 请求以字符串形式出现,因此我无法直接验证,因此我将请求作为字符串接受并使用 json-schema-validator 对模式进行验证。

【讨论】:

    猜你喜欢
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 2016-07-02
    • 2014-09-05
    • 2013-02-08
    • 1970-01-01
    相关资源
    最近更新 更多