내 연락처 정보
우편메소피아@프로톤메일.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Tip: 글 작성 후 자동으로 목차가 생성될 수 있습니다. 생성 방법은 오른쪽 도움말 문서를 참고하세요.
@JsonProperty(value = "isReceipt")
public boolean isReceipt() {
return isReceipt;
}
@JsonProperty(value = "isExamine")
public boolean isExamine() {
return isExamine;
}
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>版本号</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>版本号</version>
</dependency>
@JSONproperty 주석은 다음 용도로 사용됩니다.속성~ 위에
@JSONField 주석을 사용할 수 있습니다.가져오기, 설정 및 속성~ 위에
@JSONField 주석은 사용이 더 간단합니다. 주석의 기본값은 속성 이름과 동일하지만 @JsonProperty에서는 속성 이름을 수동으로 지정해야 합니다.
@JSONField 주석은 직렬화 중 날짜 형식, null 값 처리 방법 등과 같은 더 많은 속성 매핑 옵션을 지원합니다.
fastjson 자체가 고성능 JSON 처리 라이브러리이므로 @JSONField 주석의 성능이 더 빠릅니다.
Jackson 프레임워크를 사용하는 경우 @JsonProperty 주석만 사용할 수 있으며 @JSONField 주석은 사용할 수 없습니다.
새로운 것을 사용하는 경우스프링부트 프로젝트, 기본값은 Jackson 직렬화입니다. 속성에서 직접 주석을 사용하세요.
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>版本号</version>
</dependency>
엔터티 클래스: User.java
import com.fasterxml.jackson.annotation.JsonProperty;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
@JsonProperty("JsonPropertyName")
private String name;
private String sex;
private Integer age;
}
테스트 방법:
@Test
public void testJsonProperty() throws IOException{
//bean ---> json
User user=new User("zhangsan","man",22);
System.out.println(new ObjectMapper().writeValueAsString(user));
//json ---> bean
String str="{"sex":"man","age":22,"JsonPropertyName":"zhangsan"}";
System.out.println(new ObjectMapper().readValue(str, User.class).toString());
}
시험 결과:
{"sex":"man","age":22,"JsonPropertyName":"zhangsan"}
User [name=zhangsan, sex=man, age=22]
Bean이 json 문자열로 변환된 후 @JsonProperty로 주석이 달린 Bean 속성 이름이 지정된 속성 이름인 JsonPropertyName으로 대체되었음을 알 수 있습니다.
json 문자열이 bean으로 변환된 후 @JsonProperty 주석으로 지정된 속성 이름은 bean 속성 이름으로 대체되었습니다: name;
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>版本号</version>
</dependency>
엔터티 클래스: User.java
import com.alibaba.fastjson.annotation.JSONField;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
@JSONField(name="JSONFieldName")
private String name;
private String sex;
private Integer age;
}
테스트 방법:
@Test
public void testSONField(){
//bean ---> json
User user=new User("zhangsan","man",22);
System.out.println(JSON.toJSONString(user));
//json ---> bean
String str="{"JSONFieldName":"zhangsan","age":22,"sex":"man"}";
System.out.println(JSON.parseObject(str, User.class).toString());
}
시험 결과:
{"JSONFieldName":"zhangsan","age":22,"sex":"man"}
User [name=zhangsan, sex=man, age=22]
형식 속성은 날짜 유형 속성의 형식과 숫자 유형을 문자열 유형으로 변환하는 형식을 지정하는 데 사용할 수 있습니다.
public class User {
private String name;
private int age;
@JSONField(format = "yyyy-MM-dd")
private Date birthday;
@JSONField(format = "#,###.00")
private double salary;
}
public class User {
@JSONField(serialize = false)
private int userId;
private String name;
private int age;
}
위의 예에서 userId 속성은 @JSONField 주석을 사용하여 직렬화에서 제외됩니다.
public class User {
private int userId;
private String name;
@JSONField(deserialize = false)
private int age;
}
위의 예에서 age 속성은 @JSONField 주석을 사용하여 역직렬화에서 제외됩니다.
속성의 순서는 순서 속성을 통해 지정할 수 있습니다.
public class User {
@JSONField(ordinal = 2)
private String name;
@JSONField(ordinal = 1)
private int age;
}
위의 예에서 @JSONField 주석은 age 속성의 순서가 1이고 name 속성의 순서가 2임을 지정하는 데 사용됩니다.
defaultValue 속성은 Java 객체에서 속성의 기본값을 지정하는 데 사용될 수 있습니다.
public class User {
@JSONField(defaultValue = "0")
private int userId;
@JSONField(defaultValue = "N/A")
private String name;
private int age;
}
위의 예에서 @JSONField 주석은 userId 속성의 기본값이 0이고 name 속성의 기본값이 "N/A"임을 지정하는 데 사용됩니다.
public class User {
private int userId;
@JSONField(type = FieldType.STRING)
private int age;
}
위의 예에서는 @JSONField 주석을 사용하여 age 속성의 유형을 문자열 유형으로 지정합니다.