为了账号安全,请及时绑定邮箱和手机立即绑定

如何验证param实际上是Json,而不仅仅是字符串

如何验证param实际上是Json,而不仅仅是字符串

蓝山帝景 2023-11-10 15:53:03
我有一个 JsonNode,我接受它作为端点的参数。看起来像这样:@ApiModelProperty(value = "data", example = "{}", required = true)@NotNull(message = "data cannot be null")protected JsonNode data;我想创建一个名为 的验证器@ValidJson。JsonNode 本身将确保提供给它的信息是有效的 json,所以如果我传递如下内容:{"data" = "hello",},如果 后面多了一个逗号"hello",就会抛出错误。但是我如何确保我没有得到类似"Hello"JsonNode 的东西,它是有效的 json,因为普通的 String 是有效的 json 表示形式?我首先想检查字符串是否只是字母数字,如果是,那么我会认为它无效,但显然有人可以传递一个带有符号的字符串,那就没问题了。我能想到的最好的解决方案是检查第一个和最后一个字符分别是{和},JsonNode 会处理其余的事情。但我对 的了解还不够JsonNode,所以也许这里有人有更好的主意?编辑:为了更具体地表达我想要的,这里有几个例子:JsonNode 会处理不正确的 Json。我想对我获取的数据进行一些更严格的验证。我不想接收任何类型的 Json,我想要“真正的”、可序列化的 json,这就是我们所说的 json 时所指的。如果用户传递一个如下所示的字符串:"Hello" "Hello world" "I'm just a random String that isn't in a key:value structure"等等,我想抛出一个错误并询问他们以 key:value 结构格式化的 Json,例如:{   "key": "value"}我正在考虑检查第一个和最后一个字符串值是否分别为{和},正如我在评论中提到的那样,但我认为这太“hacky”,也许有更好的方法。
查看完整描述

2 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

Jackson 旨在将 JSON 转换为 Java 对象。尽管您的用例可以工作,但它很可能不是很有帮助。

如果你真的想使用 JsonNode,Jackson 已经检查它是否是正确的 JSON,否则它会立即抛出异常,因为它无法将其解析为 JsonNode。

如果你想要一个JSON 对象,你可以简单地使用 aMap<String, Object>而不是JsonNode。这将处理键值部分。


查看完整回答
反对 回复 2023-11-10
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

isObject这就是我正在寻找的功能。



查看完整回答
反对 回复 2023-11-10
  • 2 回答
  • 0 关注
  • 80 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信