2017-02-14 6 views
-1

Учитывая ниже JSONКак игнорировать поле JSon и получить его значение на карту с помощью Джексона ObjectMapper

{ 
    "countries":{ 
     "country":[{ 
      "name":"USA", 
      "independence":"July 4, 1776", 
     }], 
    }, 
    } 

Я хотел бы игнорировать «страны» и получить значение страны вместо этого. следовательно, после картирования мой json должен выглядеть так

{ 
    "countries": [{ 
      "name":"USA", 
      "independence":"July 4, 1776", 
     }], 
} 

Возможно ли это с помощью ObjectMapper?

EDIT: ниже являются Pojo

public class Result { 
private static final long serialVersionUID = 6403654749443599206L; 

@Getter @Setter @JsonProperty("country") private List<Country> countries; 
} 

public class Country { 
private static final long serialVersionUID = 6403654749443599206L; 

@Getter @Setter private String name; 
@Getter @Setter private String independence; 
} 

и я делаю это

return new ObjectMapper().readValue({jsonValue}, Result.class); 
+0

Каков ваш код? –

+0

@ CássioMazzochiMolin return mapper.readValue ({jsonValue}, {pojo.class}); – user3137376

+0

И какой у вас класс POJO? –

ответ

0

вход JSON имеет неправильный синтаксис. Это должно быть так

{ 
    "countries":{ 
     "country":[{ 
      "name":"USA", 
      "independence":"July 4, 1776" 
     }] 
    } 
    } 

ObjectMapper ObjectMapper используется для превращения json в Object и Object в json. Во всяком случае, для преобразования первого JSON в другой вы хотите вы можете сделать что-то вроде этого:

import com.fasterxml.jackson.databind.ObjectMapper; 
import com.fasterxml.jackson.databind.SerializationFeature; 

import java.io.IOException; 
import java.util.List; 

public class ConvertExample { 

    public static void main(String[]args) { 

     String inputJson = new String("{\"countries\":{\"country\":[{\"name\":\"USA\", \"independence\":\"July 4, 1776\"}]}}"); 

     ObjectMapper mapper = new ObjectMapper(); 
     mapper.enable(SerializationFeature.INDENT_OUTPUT); //To indent output, optional 
     try { 
      StartPojo startPojo = mapper.readValue(inputJson, StartPojo.class); 
      EndPojo endPojo = new EndPojo(); 
      endPojo.countries = startPojo.getCountries().getCountry(); 
      String outputJson = mapper.writeValueAsString(endPojo); 

      System.out.println("Output:"); 
      System.out.println(outputJson); 

     } catch (IOException e) { 
      e.printStackTrace(); //Cannot read the input json 
     } 
    } 

    @JsonIgnoreProperties(ignoreUnknown = true) 
    public static class StartPojo { 
     private Countries countries; 

     public Countries getCountries() { 
      return countries; 
     } 

     public void setCountries(Countries countries) { 
      this.countries = countries; 
     } 
    } 

    @JsonIgnoreProperties(ignoreUnknown = true) 
    public static class EndPojo { 
     private List<Country> countries; 

     public List<Country> getCountries() { 
      return countries; 
     } 

     public void setCountries(List<Country> countries) { 
      this.countries = countries; 
     } 
    } 

    @JsonIgnoreProperties(ignoreUnknown = true) 
    public static class Countries { 
     private List<Country> country; 

     public List<Country> getCountry() { 
      return country; 
     } 

     public void setCountry(List<Country> country) { 
      this.country = country; 
     } 
    } 

    @JsonIgnoreProperties(ignoreUnknown = true) 
    public static class Country { 
     private String name; 
     private String independence; 

     public String getName() { 
      return name; 
     } 

     public void setName(String name) { 
      this.name = name; 
     } 

     public String getIndependence() { 
      return independence; 
     } 

     public void setIndependence(String independence) { 
      this.independence = independence; 
     } 
    } 
} 

Этот класс принимает входной JSON и преобразовать его в другой формат, напечатав его в консоль. Вывод этого кода:

{ 
    "countries" : [ { 
    "name" : "USA", 
    "independence" : "July 4, 1776" 
    } ] 
} 
Смежные вопросы