据我所知,所有JSON字段名都是字符串值。但是,我遇到了一个代码片段,它对JSON的“键”执行字符串检查以查看它是否为字符串,如果不是,则会抛出异常。它类似于:
if (!(key instanceof String)){
throw new exception();}
这项检查是否必要?
编辑:
例如,
while (jp.nextToken() == JsonToken.FIELD_NAME){
String key = jp.getCurrentName();
}
此代码段只会进展为字符串的JSON令牌,因此我想知道JSON是否可以包含不是字符串的字段名,以便Jackson解析器只会跳过这些字段名。
答案 0 :(得分:1)
来自JSON official website(以及代理,JSON Data Interchange Standard):
创建对象时,密钥必须为String
。
编辑:正如@SotiriosDelimanolis在评论中指出的那样,这仅适用于JSON文件的格式,不一定通过Java库进行解析。
例如,杰克逊可以将密钥反序列化为自定义类型 - @SotiriosDelimanolis