我正在尝试测试使用杰克逊将一串键/值属性反序列化为Map<String, String>
的代码。我需要找到输入字符串的格式。我以为这是以下格式之一,但是两者都从objectMapper.readValue()返回null。
String testDeserStr = "{\n" +
" \"password\" : \"pwValue\",\n" +
" \"meterNumber\" : \"meterNumber1233445\",\n" +
" \"accountNumber\" : \"accountNumber6789\",\n" +
" \"key\" : \"keyValue\"\n" +
"}";
String testDeserStr = "{password=pwValue, meterNumber=meterNumber1233445, accountNumber=accountNumber6789, key=keyValue}";
使用这些字符串,它试图通过以下方式读取它们:
final TypeReference<HashMap<String, String>> typeRef = new TypeReference<HashMap<String, String>>() { };
Map<String, String> result = objectMapper.readValue(testDeserStr, typeRef);
我以前使用过jackson进行序列化和反序列化,但是以前没有使用过TypeReference。我究竟做错了什么?输入字符串的格式是什么?
答案 0 :(得分:1)
我刚刚测试过:
public class JsonTest {
public static void main(String[] args) throws IOException {
String testDeserStr = "{\n" +
" \"password\" : \"pwValue\",\n" +
" \"meterNumber\" : \"meterNumber1233445\",\n" +
" \"accountNumber\" : \"accountNumber6789\",\n" +
" \"key\" : \"keyValue\"\n" +
"}";
ObjectMapper objectMapper = new ObjectMapper();
TypeReference<HashMap<String, String>> typeRef = new TypeReference<HashMap<String, String>>() {};
Map<String, String> result = objectMapper.readValue(testDeserStr, typeRef);
System.out.println(result);
}
}
并收到输出:
{password=pwValue, meterNumber=meterNumber1233445, accountNumber=accountNumber6789, key=keyValue}
这是基于您原始输入的toString()
的{{1}}方法的有效结果。