Java 无法使用mapper.readValue将有效的UUID字符串转换为UUID
我有一个字符串格式的有效UUIDJava 无法使用mapper.readValue将有效的UUID字符串转换为UUID,java,uuid,mapper,Java,Uuid,Mapper,我有一个字符串格式的有效UUID 7a041f81-1214-41e5-bb58-9a46b2ca08d4 但是,当我使用ObjectMapper将其转换为UUID时,我总是会遇到这个错误 UUID uuid = mapper.readValue("7a041f81-1214-41e5-bb58-9a46b2ca08d4",UUID.class); 错误: com.fasterxml.jackson.core.JsonParseException: 意外字符('a'(代码97)):应
7a041f81-1214-41e5-bb58-9a46b2ca08d4
但是,当我使用ObjectMapper
将其转换为UUID时,我总是会遇到这个错误
UUID uuid = mapper.readValue("7a041f81-1214-41e5-bb58-9a46b2ca08d4",UUID.class);
错误:
com.fasterxml.jackson.core.JsonParseException:
意外字符('a'(代码97)):应使用空格分隔根级别值
位于[来源:(字符串)“7a041f81-1214-41e5-bb58-9a46b2ca08d4”;行:1,列:3]
在com.xxxx.yyyy.zzzzz.Test.callTest(BmcEventListenerTest.java:22
如何将字符串转换为UUID,以及为什么一直出现此错误?您不需要对象映射器,可以执行以下操作
UUID obj = UUID.fromString("7a041f81-1214-41e5-bb58-9a46b2ca08d4");
演示:这不是一个有效的JSON,为什么您希望objectMapper会读取它?为什么您要使用jackson objectMapper将字符串转换为UUID?@Hummingbird,因为您使用的类解析JSON,而没有任何JSONinvolved@f1sh好的,所以我很好奇这个格式是否有效??
“{“uuid”:7a041f81-1214-41e5-bb58-9a46b2ca08d4}”
?JSON没有UUID类型-JSON解析器看到前导的“7”,并假设它可以解析一个数字,然后遇到“a”,并被迫放弃,因为它无法再将字符串解析为数字。JSON的值部分需要加引号,因此UUID最初作为字符串读取。而不是string,它是无效的JSON,因为它不是数字或布尔值,等等。如果您必须只使用映射器,那么您可以执行以下mapper.readValue(“\”7a041f81-1214-41e5-bb58-9a46b2ca08d4\”,UUID.class);
如果解决了您的问题,请接受anser。