[alibaba/fastjson]JSON校验中,对于纯数字会认为是个JSON

2024-09-06 996 views
7

我用的是1.2.78的版本,校验一个字符串是否是一个JSON时,发现如果字符串是个纯JSON,他会认为是个JSON。如下代码的执行结果是true @Test public void test23(){ String s="123456"; JSONValidator from = JSONValidator.from(s); boolean validate = from.validate(); System.out.println(validate); }

回答

9

https://www.w3schools.com/js/js_json_syntax.asp

JSON syntax is derived from JavaScript object notation syntax:

  • Data is in name/value pairs
  • Data is separated by commas
  • Curly braces hold objects
  • Square brackets hold arrays

"123456" 其实是第一种情况,等同于 "123456":null

2

@harkue 如果这样的话,那么我执行下面的代码的时候是不是应该是可以正常转成JSON的

@Test public void test23(){ String s="123"; JSONObject jsonObject = JSON.parseObject(s); System.out.println(jsonObject); }

8

如果这样的话,那么我执行下面的代码的时候是不是应该是可以正常转成JSON的

我理解是, 转出来就是"123"本身

使用JS进行转换可以得到:

> JSON.parse("123")
> 123

JS会将字符串转成数字,所以是123. 但是从整体解析来看,是应该可以解析的。 我觉得对Java而言,也是一样的道理。