Estou tentando fazer algo assim, mas não funciona:
Map<String, String> propertyMap = new HashMap<String, String>();
propertyMap = JacksonUtils.fromJSON(properties, Map.class);
Mas o IDE diz:
Atribuição não verificada
Map to Map<String,String>
Qual é o caminho certo para fazer isso? Estou usando apenas Jackson, porque é isso que já está disponível no projeto. Existe uma maneira nativa de Java de converter de / para JSON?
No PHP, eu simplesmente json_decode($str)
e recuperaria uma matriz. Eu preciso basicamente da mesma coisa aqui.
Respostas:
Eu tenho o seguinte código:
Ele está lendo um arquivo, mas
mapper.readValue()
também aceita umInputStream
e você pode obter umInputStream
de uma string usando o seguinte:Há um pouco mais de explicação sobre o mapeador no meu blog .
fonte
JsonFactory
não é necessária.ObjectMapper
pode criá-lo automaticamente por conta própria.Map<String, String>
e você forneceuMap<String, Object>
.mapper.writeValueAsString(hashmap)
Tente
TypeFactory
. Aqui está o código para Jackson JSON (2.8.4).Aqui está o código para uma versão mais antiga do Jackson JSON.
fonte
O aviso obtido é feito pelo compilador, não pela biblioteca (ou método utilitário).
A maneira mais simples de usar o Jackson diretamente seria:
O método utilitário que você chama provavelmente faz algo semelhante a isso.
fonte
Map<String, String>
e você forneceuMap<String, Object>
.Observe que a
reader
instância é segura para threads.fonte
Map<String, String>
e você forneceuMap<String, Object>
.Convertendo de String para Mapa JSON:
fonte
Type safety: The expression of type HashMap needs unchecked conversion to conform to Map<String,String>
. Enquanto isso pode ser suprimido com@SuppressWarnings
anotação, eu recomendo usarTypeReference
primeiro ou fundição próxima como mencionado por Staxmanmap = mapper.readValue(string, map.getClass());
- desde que você instanciou o mapa, como é o caso aqui.Eu acho que isso vai resolver o seu problema.
fonte
O seguinte funciona para mim:
Onde
getJsonAsMap
é definido assim:Note que este irá falhar se você tem objetos filho em sua json (porque eles não são um
String
, eles são outraHashMap
), mas vai funcionar se o JSON é uma lista de valores-chave de imóveis como assim:fonte
Usando o Gson do Google
Por que não usar o Gson do Google, como mencionado aqui ?
Muito direto e fez o trabalho para mim:
fonte
Aqui está a solução genérica para esse problema.
Espero que algum dia alguém pense em criar um método util para converter para qualquer tipo de mapa de chave / valor, portanto, esta resposta :)
fonte
só queria dar uma resposta Kotlin
fonte