IT

Jackson을 사용하여 JSON에서 필드 이름 변경

lottoking 2020. 6. 6. 21:09
반응형

Jackson을 사용하여 JSON에서 필드 이름 변경


잭슨을 사용하여 내 객체를 json으로 변환하고 있습니다. 객체에는 2 개의 필드가 있습니다.

@Entity
public class City {
   @id
   Long id;
   String name;
   public String getName() { return name; }
   public void setName(String name){ this.name = name; }
   public Long getId() { return id; }
   public void setName(Long id){ this.id = id; }
}

jQuery 자동 완성 기능과 함께 이것을 사용하고 싶기 때문에 'id'는 json에서 'value'로 나타나고 'name'은 'label'로 나타납니다. 잭슨의 문서는 이에 대한 명확하지 않습니다와 나는 내가 필요하지 않습니다하지만 난 얻을 수없는 것처럼, 심지어 원격으로 보인다 모든 주석을 해봤 name로 표시 label하고 id로 표시 valuejson으로한다.

이 작업을 수행하는 방법 또는 가능한지 아는 사람이 있습니까?


@JsonProperty를 사용해 보셨습니까?

@Entity
public class City {
   @id
   Long id;
   String name;

   @JsonProperty("label")
   public String getName() { return name; }

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

   @JsonProperty("value")
   public Long getId() { return id; }

   public void setId(Long id){ this.id = id; }
}


이 있음을주의 org.codehaus.jackson.annotate.JsonProperty잭슨 1.x에서와 com.fasterxml.jackson.annotation.JsonProperty잭슨 2.x 또는 3.0에 사용중인 ObjectMapper (버전에 따라)를 확인하고 올바른 주석을 사용해야합니다.


필드 이름을 바꾸는 옵션이 하나 더 있습니다.

잭슨 믹스 인 .

주석을 달 수없는 타사 클래스 를 처리 하거나 Jackson 특정 주석으로 클래스를 오염시키지 않으려는 경우에 유용합니다 .

Mixins에 대한 Jackson 문서는 구식이므로이 는 더 명확합니다. 본질적으로 : 원하는 방식으로 직렬화를 수행하는 mixin 클래스를 만듭니다. 그런 다음 ObjectMapper에 등록하십시오.

objectMapper.addMixIn(ThirdParty.class, MyMixIn.class);

참고 URL : https://stackoverflow.com/questions/7263282/change-field-name-in-json-using-jackson

반응형