Technology sharing

SpringBoot annotationes---11--@JSONField @JsonProperty

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Indicium: postquam scriptum est, tabula contentorum sponte generari potest.


Interrogatio: attributa incipientes ab isXXX in genere entitatis posterioris fine sponte tolluntur post transitum ad ante-finem.

Insert imaginem descriptionis hic

Insert imaginem descriptionis hic
Insert imaginem descriptionis hic
Insert imaginem descriptionis hic
Insert imaginem descriptionis hic

Solutio:

  1. Mutare genitum isReceipt () modum nomen getIsReceipt ()
  2. Addere annotationem ad genitum modum, id est, Receipt.
 @JsonProperty(value = "isReceipt")
    public boolean isReceipt() {
        return isReceipt;
    }
    @JsonProperty(value = "isExamine")
    public boolean isExamine() {
        return isExamine;
    }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

Insert imaginem descriptionis hic

@JsonProperty and @JSONField

1. Introductio

  • @JsonProperty and @JSONField annotationes sunt forCum obi ad json chorda convertens, repone nomen attributum fabae scopo attributum nomen . Commune est in missionibus ubi repugnant nomina proprietatis cum vocantem tertium-partem interfacies.
  • Duae annotationes eaedem sunt functiones, sed ex diversis fontibus veniunt et diversimode adhibentur. Similitudines et differentiae infra singillatim explicabuntur!

2. Discrimen annotationes

2.1 Ratio compage differt

  • @JsonProperty is implemented by Jackson
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>版本号</version>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • @JSONField implemented per fastjson
         <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>版本号</version>
        </dependency>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2.2 diversis scopes

@JSONproperty annotationem adhibetur forAttributessupra

  • Ut veriName attributum videas nomine, @JsonProperty(value="name") addere potes nomini attributo.

@JSONField annotationem adhiberi potestaccipere, set et possessionessupra

  • Ad nomen veri nominis attributum serialize, @JSONField(value="name") addere potes ad nomen proprium acquirendi.

2.3 Comparatio commoda et incommoda

  1. The @JSONField annotation is simpler to use.

  2. Annotationum @JSONField optiones mappings attributa plura sustinet, qualia forma moderna in serializatione, quomodo valores nullos tractandi, etc.

  3. Persecutio @JSONField annotationis celerior est quia fastjson ipsa est summus perficientur JSON bibliothecae processus.

  4. Cum Alciati compage utens, tantum uti potes @JsonProperty annotationem, et @JSONField annotatione uti non potes.

@JsonProperty

Si vos es usura novumspringboot project, default est Jackson serialization, annotationes directe in proprietatibus utuntur.

1. Dependentia

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>版本号</version>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • Annotatio @JsonProperty e sarcina jackson venit et cum ObjectMapper adhibetur (). scribe ValueAsString (ens genus) methodum convertendi genus entitatis in chorda json.
  • Adhibetur cum ObjectMapper().value (chorda) methodum convertendi json chordas in classes entitatis.

2. Probate conversionem inter json filum et faba

Entity class: 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;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

Test Methodi:

@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());
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

Proventus test:

{"sex":"man","age":22,"JsonPropertyName":"zhangsan"}
User [name=zhangsan, sex=man, age=22]
  • 1
  • 2
  • Videri potest quod, postquam faba in chorda json convertitur, faba nomen proprietatis annotatum cum @JsonProperty substitutum est cum nomine proprietatis definito: JsonPropertyName;

  • Post json chorda in fabam convertitur, proprietas nominis quae per @JsonProperty annotationem designata est, nomen proprietatis fabae substitutum est: nomen;

@JSONField

1. Dependentia

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>版本号</version>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • @JSONField in sarcina fastjson sita est et adhibetur cum JSON.toJSONString (genus entitas) methodus convertendi classes entitatis in chordas json.
  • Utere eo cum JSON.parseObjecti (nervi, entis class.class) methodus ut chordas json convertat in classes entitatis.

2. Probate conversionem inter json filum et faba

Entity class: 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;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

Test Methodi:

@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());	
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

Proventus test:

{"JSONFieldName":"zhangsan","age":22,"sex":"man"}
User [name=zhangsan, sex=man, age=22]
  • 1
  • 2
  1. Videri potest quod, postquam faba in chordam json convertitur, faba nomen attributum @JSONField annotationis substitutum est cum praefinito attributo nomine: JSONFieldName;
  2. Post json chorda in fabam convertitur, attributum nomen quod designatum a @JSONField annotationem substitutum est a faba attributum nomen: nomen;
  3. Proventus probatus idem sunt ac @JsonProperty.

3.format attributum

Forma attributi adhiberi potest ad formationem attributorum date speciei et forma conversionis generum numerorum ad chordas generum.

public class User {
    private String name;
    private int age;
    @JSONField(format = "yyyy-MM-dd")
    private Date birthday;
    @JSONField(format = "#,###.00")
    private double salary;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • In superiori exemplo, annotationem @JSONField denotare adhibetur forma data natalis attributi sicut "aaaa-MM-dd"
  • Numerus salarii forma attributum est "#, ###.00"

4. serialize attributum

  • Potes temperare an attributa in JSON obiectis per serialize attributa serialized sunt.
  • Cum attributum serialize falsum est, proprietates in objecto JSON serialized non erunt.
public class User {
    @JSONField(serialize = false)
    private int userId;
    private String name;
    private int age;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

In exemplo praecedente, attributum userId a serializatione usura @JSONField annotationem excluditur

5.deserialize attributum

  • Proprietates deserialize temperare possunt an proprietates objecti JSON in objectis Javae deseriantur.
  • Cum attributum deserialize falsum est, hoc attributum non deserilized ab objecto JSON in objecto Javae.
public class User {
    private int userId;
    private String name;
    @JSONField(deserialize = false)
    private int age;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

In superiori exemplo, aetas proprietatis exclusa est ab usu deserilatione per annotationem @JSONField

6.ordinal attributum

Ordo attributorum per attributum ordinale definiri potest

  • Defalta, ordo proprietatum innititur eo ordine quo proprietates in obiecto Javae apparent.
public class User {
    @JSONField(ordinal = 2)
    private String name;
    @JSONField(ordinal = 1)
    private int age;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

In superiori exemplo, adnotatio @JSONField ad designandum ordinem aetatis attributum adhibetur, ut 1 et ordo nominum attributorum ut II.

7.defaultValue attributum

Proprium defaultValue adhiberi potest ad valorem defaltam attributi in obiecto Javae specificare.

public class User {
    @JSONField(defaultValue = "0")
    private int userId;
    @JSONField(defaultValue = "N/A")
    private String name;
    private int age;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

In exemplo superiore, annotationem @JSONField denotare adhibetur valorem default attributi userId 0 esse et valorem defaltam nominis attributi "N/A"

8. genus attributum

  • Genus attributi potest specificari per genus attributi
public class User {
    private int userId;
    @JSONField(type = FieldType.STRING)
    private int age;
}
  • 1
  • 2
  • 3
  • 4
  • 5

In superiori exemplo, adnotatio @JSONField ad typum aetatis attributum ut chordae genus exprimendum adhibita est.