JSON 字符串解析失败,但 Java 中的数字解析通过
JSON parsing fails for string but passes for number in Java
我正在为传入的 JSON 数据编写解析器,JSON 中的值没有明确的结构。例如,父级 JSON 中的给定键可以具有整数或字符串值。在某些情况下,它也可以是另一个 JSON 字符串。当尝试使用 mongo-java-驱动程序库中的 JSON.parse() 方法时,我遇到了这种行为 -
String val = "45.55";
Object o = JSON.parse(val);
System.out.println(o);
以上代码将 o
的值打印为 45.55
String val = "product";
Object o = JSON.parse(val);
System.out.println(o);
上面的代码抛出一个com.mongodb.util.JSONParseException
为什么两个代码片段的行为方式不同?
45.55
是与具有该值的数字相关的有效 JavaScript 文字。
product
不是有效的 JavaScript 文字。 "product"
是。如果您将第二个示例更改为:
String val = "\"product\"";
...它会像你期望的那样工作。
我正在为传入的 JSON 数据编写解析器,JSON 中的值没有明确的结构。例如,父级 JSON 中的给定键可以具有整数或字符串值。在某些情况下,它也可以是另一个 JSON 字符串。当尝试使用 mongo-java-驱动程序库中的 JSON.parse() 方法时,我遇到了这种行为 -
String val = "45.55";
Object o = JSON.parse(val);
System.out.println(o);
以上代码将 o
的值打印为 45.55
String val = "product";
Object o = JSON.parse(val);
System.out.println(o);
上面的代码抛出一个com.mongodb.util.JSONParseException
为什么两个代码片段的行为方式不同?
45.55
是与具有该值的数字相关的有效 JavaScript 文字。
product
不是有效的 JavaScript 文字。 "product"
是。如果您将第二个示例更改为:
String val = "\"product\"";
...它会像你期望的那样工作。