GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Falha ao Deserializar valor do Tipo java.util.LinkedHashMap

Tags: #<Tag:0x00007fb8678ac1f0> #<Tag:0x00007fb8678bff48>
Failed to decode:Cannot deserialize value of type `java.util.LinkedHashMap<java.lang.Object,java.lang.Object>` from Array value (token `JsonToken.START_ARRAY`)
     at [Source:
       "[
    	{
    		"type": "category",
    		"suggestion": "Furadeira com Impacto"
    	},
    	{
    		"type": "sub_group",
    		"suggestion": "Furadeira Elétrica"
    	},
    	{
    		"type": "group",
    		"suggestion": "Ferramentas Elétricas"
    	}
    ]" Este é meu json.

Na classe principal ele funciona. porém aqui embaixo usando o mock nessa classe teste ele nao vai.
já tentei de tudo, problema que a deserialização é feita pelo mock server.
alguem consegue me ajudar?

@DisplayName("")
	void shouldSearchSuggestionTree() throws IOException {

		var file = new File("src/test/resources");

		var filePath = Paths.get(file.getAbsolutePath(), "mock_elastic_find_suggestion.json");
		var content = Files.readString(filePath);
		
		SearchProduct build = SearchProduct.builder().id("qry_sugestoes_arvores")
				.params(Params.builder().search("furadeira").startRegistry(0).limit(5).build()).build();

			mockServer.when(request().withMethod("GET").withPath("/sugestoes-arvores/_search/template"))
					.respond(response().withStatusCode(200).withBody(content));

		
		var response = repository.findSuggestionTree(build);

		assertFalse(false);

ele quebra aqui.

var response = repository.findSuggestionTree(build);

Vc só conseguirá converter um objeto json ({}) para LinkedHashMap e não um array ([]). No caso do array, vc deve deserializar para um List<LinkedHashMap>.

e como eu faço isso?, sendo que é o método que deserializa

De que tipo é esse repository? O que o método findSuggestionTree retorna?

Repository é uma classe injetada. e o findSuggestionTree retorna List

Qual o conteúdo desse arquivo: mock_elastic_find_suggestion.json ?

é aquele json ali em cima broo

"[
{
“type”: “category”,
“suggestion”: “Furadeira com Impacto”
},
{
“type”: “sub_group”,
“suggestion”: “Furadeira Elétrica”
},
{
“type”: “group”,
“suggestion”: “Ferramentas Elétricas”
}
]

O retorno do método é um List (sem tipo) ou um List<AlgumaClasse> de um determinado tipo?

é determinado. suggestiontree a classe

Eu tava mockando o retorno errado, valeu amigo.

//