programing

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

goodcopy 2022. 8. 3. 21:46
반응형

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 자동 완료 기능과 함께 사용하고 싶기 때문에 json에서 'id'를 'value'로, 'name'을 'label'로 표시하고 싶습니다.Jackson의 문서는 명확하지 않습니다.또한 필요한 기능을 하는 것처럼 보이는 주석을 모두 사용해 보았습니다만, 얻을 수 없습니다.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.JsonPropertyJackson 1.x 및com.fasterxml.jackson.annotation.JsonPropertyJackson 2.x에서.사용하고 있는 오브젝트 맵퍼(버전)를 체크하고 적절한 주석을 사용하고 있는지 확인합니다.

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

잭슨 믹스인스

주석을 달 수 없는 서드파티 클래스를 다루거나 잭슨 고유의 주석으로 클래스를 오염시키지 않으려는 경우에 유용합니다.

Jackson의 Mixins 문서는 오래된 문서이기 때문에 이 예에서는 보다 명확한 설명을 얻을 수 있습니다.기본적으로 원하는 방식으로 직렬화를 수행하는 mixin 클래스를 만듭니다.그런 다음 ObjectMapper에 등록합니다.

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

잭슨

Jackson을 사용하는 경우 주석을 사용하여 지정된 JSON 속성의 이름을 사용자 정의할 수 있습니다.

따라서 엔티티 필드에 주석을 달기만 하면 됩니다.@JsonProperty주석을 붙이고 다음과 같은 커스텀 JSON 속성 이름을 입력합니다.

@Entity
public class City {

   @Id
   @JsonProperty("value")
   private Long id;

   @JsonProperty("label")
   private String name;

   //Getters and setters omitted for brevity
}

JavaEE 또는 자카르타EE JSON-B

JSON-B는 Java 객체를 JSON으로 변환하기 위한 표준 바인딩 레이어입니다.JSON-B를 사용하는 경우 주석을 통해 JSON 속성 이름을 재정의할 수 있습니다.

@Entity
public class City {

   @Id
   @JsonbProperty("value")
   private Long id;

   @JsonbProperty("label")
   private String name;

   //Getters and setters omitted for brevity
}

언급URL : https://stackoverflow.com/questions/7263282/how-to-change-a-field-name-in-json-using-jackson

반응형