私の連絡先情報
郵便メール:
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
ヒント: 記事を作成した後、目次を自動的に生成することができます。生成方法については、右側のヘルプ ドキュメントを参照してください。
@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 アノテーションは使用できません。
新品を使用している場合スプリングブートプロジェクト、デフォルトはジャクソンシリアル化です。プロパティに直接アノテーションを使用してください。
<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]
format 属性を使用すると、日付型属性の形式と、数値型を文字列型に変換する形式を指定できます。
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;
}
上記の例では、@JSONField アノテーションを使用して userId 属性がシリアル化から除外されます。
public class User {
private int userId;
private String name;
@JSONField(deserialize = false)
private int age;
}
上記の例では、@JSONField アノテーションを使用して、age プロパティが逆シリアル化から除外されています。
属性の順序は、ordinal 属性を通じて指定できます。
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 属性の型を文字列型として指定しています。