当我获得字段数组时,JsonNode的实例总是收到null

时间:2015-03-29 00:03:05

标签: android json delphi jackson datasnap

在我的Android应用程序中,String类型的变量enderecos从我的Datasnap Server接收一个json数组:

[
   "{\"type\":\"ClassesProjeto.TEndereco\",\"id\":1,\"fields\":{\"FIdentificador_Endereco\":1,\"FRua\":\"Test\",\"FNumero\":\"1\",\"FCidade\":\"Test\",\"FBairro\":\"Test\",\"FEstado\":\"Test\",\"FVersao_Dispositivo\":1}}",
   "{\"type\":\"ClassesProjeto.TEndereco\",\"id\":1,\"fields\":{\"FIdentificador_Endereco\":2,\"FRua\":\"Test2\",\"FNumero\":\"1\",\"FCidade\":\"Test2\",\"FBairro\":\"Test2\",\"FEstado\":\"Test2\",\"FVersao_Dispositivo\":1}}"
]

我使用以下代码从此数组中获取每个对象的JSON值:

enderecos = dsProxy.getEnderecos();

ObjectMapper objectMapper = new ObjectMapper();
JsonNode node = objectMapper.readTree(enderecos);
    for (JsonNode node_object : node){
         JsonNode object = node_object.get("fields");
}

但是JsonNode的变量节点总是接收null,为什么?并且属性字段存在于每个Json对象中。

1 个答案:

答案 0 :(得分:1)

在正确格式化JSON之后我们都可以看到,有一个包含 2个字符串值元素的JSON数组

[
   "{\"type\":\"ClassesProjeto.TEndereco\",\"id\":1,\"fields\":{\"FIdentificador_Endereco\":1,\"FRua\":\"Test\",\"FNumero\":\"1\",\"FCidade\":\"Test\",\"FBairro\":\"Test\",\"FEstado\":\"Test\",\"FVersao_Dispositivo\":1}}",
   "{\"type\":\"ClassesProjeto.TEndereco\",\"id\":1,\"fields\":{\"FIdentificador_Endereco\":2,\"FRua\":\"Test2\",\"FNumero\":\"1\",\"FCidade\":\"Test2\",\"FBairro\":\"Test2\",\"FEstado\":\"Test2\",\"FVersao_Dispositivo\":1}}"
]

这些元素表示每个JSON字符串,必须对其进行解析以获取JSON对象。

  • 第一个元素RAW

    "{\"type\":\"ClassesProjeto.TEndereco\",\"id\":1,\"fields\":{\"FIdentificador_Endereco\":1,\"FRua\":\"Test\",\"FNumero\":\"1\",\"FCidade\":\"Test\",\"FBairro\":\"Test\",\"FEstado\":\"Test\",\"FVersao_Dispositivo\":1}}"
    
  • 第一个元素为JSON

    {
       "type":"ClassesProjeto.TEndereco",
       "id":1,
       "fields":{
          "FIdentificador_Endereco":1,
          "FRua":"Test",
          "FNumero":"1",
          "FCidade":"Test",
          "FBairro":"Test",
          "FEstado":"Test",
          "FVersao_Dispositivo":1
       }
    }
    

要像在代码中那样访问值,返回的JSON应该是这样的

[
   {
      "type":"ClassesProjeto.TEndereco",
      "id":1,
      "fields":{
         "FIdentificador_Endereco":1,
         "FRua":"Test",
         "FNumero":"1",
         "FCidade":"Test",
         "FBairro":"Test",
         "FEstado":"Test",
         "FVersao_Dispositivo":1
      }
   },
   {
      "type":"ClassesProjeto.TEndereco",
      "id":1,
      "fields":{
         "FIdentificador_Endereco":2,
         "FRua":"Test2",
         "FNumero":"1",
         "FCidade":"Test2",
         "FBairro":"Test2",
         "FEstado":"Test2",
         "FVersao_Dispositivo":1
      }
   }
]