<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.66</version> </dependency>
import lombok.Data; import java.io.Serializable; /** * @类名 WeChatBusinessLicenseInfo * @描述 营业执照/登记证书信息(测试用) * @版本 1.0 * @创建人 XuKang * @创建时间 2021/12/24 10:43 **/ @Data public class LkWeChatBusinessLicenseInfo implements Serializable { private static final long serialVersionUID = 1582941630439552458L; private String businessLicenseCopy; private String businessLicenseNumber; private String merchantName; private String legalPerson; private String companyAddress; private String businessTime; public LkWeChatBusinessLicenseInfo(){ this.businessLicenseCopy = "1"; this.businessLicenseNumber = "2"; this.merchantName = "3"; this.legalPerson = "4"; this.companyAddress = "5"; this.businessTime = "6"; } }
System.out.println(JSONObject.toJSONString(new LkWeChatBusinessLicenseInfo()));
{
„businessLicenseCopy“: „1“,„businessLicenseNumber“: „2“,„legal_person“: „4“,„businessTime“: „6“,
4. Fügen Sie Anmerkungen hinzu und drucken Sie den konvertierten JSON aus. ,
„companyAddress“: „5“,
„legalPerson“: „4“,
„merchantName“: „3“
}
3 Wir müssen in einen unterstrichenen Schlüssel konvertieren, z. B. „businessLicenseCopy“ in „business_license_copy“ umwandeln. Wir müssen die Entität ändern und die Anmerkung @JSONField hinzufügen
„merchant_name“: „3“
}3. Der von uns ausgegebene und gedruckte JSON sieht so aus: 1“,
„business_license_number“: „2“,„business_time“: „6“,„company_address“: „5“,
2. Fügen Sie die Sortierordnung zur @JSONField-Annotation hinzu
„legal_person“: „4“,
„merchant_name“: „3“
}
Wir möchten die Schlüssel in einer bestimmten Reihenfolge neu anordnen
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.annotation.JSONField; import lombok.Data; import java.io.Serializable; /** * @类名 WeChatBusinessLicenseInfo * @描述 营业执照/登记证书信息(测试用) * @版本 1.0 * @创建人 XuKang * @创建时间 2021/12/24 10:43 **/ @Data public class LkWeChatBusinessLicenseInfo implements Serializable { private static final long serialVersionUID = 1582941630439552458L; @JSONField(name = "business_license_copy") private String businessLicenseCopy; @JSONField(name = "business_license_number") private String businessLicenseNumber; @JSONField(name = "merchant_name") private String merchantName; @JSONField(name = "legal_person") private String legalPerson; @JSONField(name = "company_address") private String companyAddress; @JSONField(name = "business_time") private String businessTime; public LkWeChatBusinessLicenseInfo(){ this.businessLicenseCopy = "1"; this.businessLicenseNumber = "2"; this.merchantName = "3"; this.legalPerson = "4"; this.companyAddress = "5"; this.businessTime = "6"; } }
{„business_license_copy“: „1“,
„business_license_number“: „2“,
„merchant_name“: „3“,
„legal_person“: „4“,
„company_address“: „5“,
„business_time“:“6“
}
Zusammenfassung:
Zusätzlich zu @JSONField gibt es auch @JsonProperty und @SerializedName; @JsonProperty wird hauptsächlich für die Konvertierung von Eingabeparametern und die Serialisierung von Json-Strings verwendet Java-Objekte; @SerializedName ändert die Feldwerte der Standardserialisierung und der Standarddeserialisierung. Häufige Verwendungsszenarien der @JSONField-Annotation.Ende möchte Der erforderliche Feldname unterscheidet sich derzeit von dem von uns bereitgestellten Feldnamen. Wenn die Entitätsklasse jedoch häufiger verwendet wird, sind die Kosten für die Änderung zu hoch , Sie können die Annotation @JSONField verwenden, um den Ersatz zu erreichen:System.out.println(JSONObject.toJSONString(new LkWeChatBusinessLicenseInfo()));Nach dem Login kopierenNach dem Login kopieren
1. JSON-Inhalt und Entitätsklasse, reguläre Schreibmethode von @JSONField
JSON (konsistent mit dem folgenden JSON-String-Inhalt)import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.annotation.JSONField; import lombok.Data; import java.io.Serializable; /** * @类名 WeChatBusinessLicenseInfo * @描述 营业执照/登记证书信息(测试用) * @版本 1.0 * @创建人 XuKang * @创建时间 2021/12/24 10:43 **/ @Data public class LkWeChatBusinessLicenseInfo implements Serializable { private static final long serialVersionUID = 1582941630439552458L; @JSONField(name = "business_license_copy",ordinal = 1) private String businessLicenseCopy; @JSONField(name = "business_license_number",ordinal = 2) private String businessLicenseNumber; @JSONField(name = "merchant_name",ordinal = 3) private String merchantName; @JSONField(name = "legal_person",ordinal = 4) private String legalPerson; @JSONField(name = "company_address",ordinal = 5) private String companyAddress; @JSONField(name = "business_time",ordinal = 6) private String businessTime; public LkWeChatBusinessLicenseInfo(){ this.businessLicenseCopy = "1"; this.businessLicenseNumber = "2"; this.merchantName = "3"; this.legalPerson = "4"; this.companyAddress = "5"; this.businessTime = "6"; } }Nach dem Login kopieren
Entity-Klasse (AppleDO.java)@JSONField(name = "size_new") private int size;Nach dem Login kopieren
2. JSON-Zeichen String-Konvertierung entspricht Java-Objekt
Ausführungscode
{ size: 5, weight: 10, colour: "red" }
Ausführungsergebnis
3. Unterstützt Serialisierung und Deserialisierung.Die Standardwert der Serialisierung und die Deserialisierung im Quellcode wahr ist, dann ist dies standardmäßig der Fall. Dieses Feld darf wie folgt serialisiert und deserialisiert werden:
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.annotation.JSONField; public class AppleDO { @JSONField(name = "size_new") private int size; @JSONField(name = "weight_new") private int weight; @JSONField(name = "colour_new") private String colour; public int getSize() { return size; } public void setSize(int size) { this.size = size; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public String getColour() { return colour; } public void setColour(String colour) { this.colour = colour; } }
public static void main(String[] args) { String json = "{\n" + " size_new: 5,\n" + " weight_new: 10,\n" + " colour_new: \"red\",\n" + "}"; AppleDO appleDO = JSON.parseObject(json, AppleDO.class); System.out.println(appleDO.getSize()); System.out.println(appleDO.getWeight()); System.out.println(appleDO.getColour()); }
boolean serialize() default true; boolean deserialize() default true;
@JSONField(name = "size_new", serialize = false, deserialize = true) private int size;
@JSONField(serialzeFeatures= SerializerFeature.WriteMapNullValue)
Das laufende Ergebnis nach dem Hinzufügen des Ordinalparameters
Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem des Umbenennens und Ordnens von @JSONField-Objektfeldern in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!