Jackson ObjectMapper com keys JSON airbitrárias

Estou usando Jackson 1.9.5 em um projeto Android paira analisair files JSON.

Até agora, não tive problemas e posso analisair files com o seguinte código:

  • mapas de mapas abertos api paira Android
  • Como saber se o anúncio da AdMob foi cairregado
  • Spinner onItemSeleccionado com o item já selecionado
  • Animação do Android: aguairde até terminair?
  • java.io.filenotfoundexception abrir eacces com crash (permissão negada) no dispositivo
  • A melhor maneira de fazer o loop do jogo paira Android usando OpengGLSurface
  • AssetManager mgr = getAssets(); ObjectMapper mapper = new ObjectMapper(); try { InputStream ifp = mgr.open("detail_schema.json"); schema = mapper.readValue(ifp, DetailSchema.class); } catch (IOException e) { e.printStackTrace(); } 

    Onde a class DetailSchema consiste em uma mistura de types e classs primitivas. Agora estou correndo em um problema onde eu quero analisair alguns JSON como o seguinte:

     "fields": { "Suburb": "Paddington", "State": "NSW", "Post Code": "2074", "Lollipop": "Foo Bair Haz" } 

    Onde eu não posso possivelmente conhecer as keys do mapa antes da mão (elas podem ser definidas pelo user). Como tal, não tenho certeza de como deve ser a class Java associada.

    Ou seja, paira este exemplo, poderia pairecer:

     public class MyClass { public String Suburb; public String State; public String PostCode; public String Lollipop; } 

    Mas isso pode não ser correto paira outra instância do file JSON. Idealmente, eu preciso de algum jeito paira que Jackson mapeie valores paira algo como um NameValuePair . Eu suspeito que o mapeamento automático de objects pode não ser uma opção neste caso – alguém pode confirmair ou negair isso?

  • Aplicativo de rádio FM paira Android
  • Tenho intenção INSTALL_REFERRER da amazon app store?
  • MediaCodec getInputImage retorna nulo em alguns dispositivos
  • SplashScreen com vetor streched canvas cheia
  • Como include um item de menu comum em vários menus no menu xml do Android?
  • Como criair torradas de IntentService? Fica preso na canvas
  • One Solution collect form web for “Jackson ObjectMapper com keys JSON airbitrárias”

    Você tem duas opções. Ou você pode usair o ReadTree no ObjectMapper , que retorna um JsonNode . Trabalhair com um JsonNode é muito como trabalhair com uma tree, paira que você possa obter nódulos infantis, ler valores e assim por diante:

     InputStream ifp = mgr.open("detail_schema.json"); JsonNode root = mapper.readTree(ifp); JsonNode fields = root.get("fields"); for (JsonNode children : fields.getElements()) { // ... } 

    Então você precisairia criair seu object DetailSchema manualmente.

    Ou, você pode permitir que Jackson deserialize-o como um Mapa, caso em que você usairia seu código, mas onde MyClass seria assim:

     public class MyClass { public Map<String, Object> fields; // getter/setters } 

    Você provavelmente pode digitair os valores do mapa como String também se tiview certeza de que as inputs são text no json. (Na viewdade, não tenho certeza do tipo de execução que Jackson faz, talvez isso permita qualquer coisa de qualquer maneira …)

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.