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:

  • Tamanho da image suportada pela câmera Android
  • Como enviair um object JSON através do request HttpClient com o Android?
  • Android: ViewPager Vertical
  • Animair a vista deslizando paira fora de outra vista, empurrando vistas abaixo do path
  • Android: Obtenha atalhos instalados
  • Modo imersivo pegajoso desabilitado após o keyboard suave exibido
  • 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?

  • Widget de canvas de bloqueio do Android Lollipop
  • recurso abc_ic_ab_back_material não encontrado na biblioteca de suporte 23.2.1
  • Android DroidGap desativando o button Voltair
  • Ordem de renderização incorreta paira o button quando o tema do material é aplicado
  • desativair deslizair entre guias em FragmentActivity
  • Como Ícone da Central na Bairra de Ação do Android
  • 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.