2013-09-09 2 views
0

Я пытаюсь понять какой-то унаследованный производственный код.Чтение значения JSON не удается

Вот тест, который имитирует то, что код делает производство:

Map json = new HashMap(); 
    json.put("messageCategory", "Hello World"); 

    ObjectMapper mapper = new ObjectMapper(); 

    String out = mapper.writeValueAsString(json); 

    System.out.println(out); 

    final JsonNode node = mapper.valueToTree(out); 

    Assert.assertEquals("Hello World", node.findValue("messageCategory")); 

выход:

{"messageCategory":"Hello World"} 
junit.framework.AssertionFailedError: 
Expected :Hello World 
Actual :null 

Методы valueToTree возвращает нуль, и я не знаю, почему.

ответ

0

Это значение null, поскольку вы сериализуете строку в вызове valueToTree(). Таким образом, после отображения ваш узел содержит одну строку этой формы:

"{\"messageCategory\":\"Hello World\"}" 

И так ваш узел не содержит свойство с именем 'messageCategory.

Изменить

final JsonNode node = mapper.valueToTree(out); 

в

final JsonNode node = mapper.valueToTree(json);