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

Instance of JsonNode always receive null when I will get array of fields

在我的 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");
}

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

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

[
   "{\"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
      }
   }
]