您可以使用任何流行的 Json 序列化库将 Java 对象转换为 Json,反之亦然:
在 Jackson 的例子中,Java 中的对象看起来像这样:
package com.example;
import java.util.HashMap;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"issue_date",
"cov"
})
public class CovDetail {
@JsonProperty("issue_date")
private String issueDate;
@JsonProperty("cov")
private String cov;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
@JsonProperty("issue_date")
public String getIssueDate() {
return issueDate;
}
@JsonProperty("issue_date")
public void setIssueDate(String issueDate) {
this.issueDate = issueDate;
}
@JsonProperty("cov")
public String getCov() {
return cov;
}
@JsonProperty("cov")
public void setCov(String cov) {
this.cov = cov;
}
@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}
@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}
}
package com.example;
import java.util.HashMap;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"result",
"request_id",
"status-code"
})
public class Result {
@JsonProperty("result")
private Result_ result;
@JsonProperty("request_id")
private String requestId;
@JsonProperty("status-code")
private String statusCode;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
@JsonProperty("result")
public Result_ getResult() {
return result;
}
@JsonProperty("result")
public void setResult(Result_ result) {
this.result = result;
}
@JsonProperty("request_id")
public String getRequestId() {
return requestId;
}
@JsonProperty("request_id")
public void setRequestId(String requestId) {
this.requestId = requestId;
}
@JsonProperty("status-code")
public String getStatusCode() {
return statusCode;
}
@JsonProperty("status-code")
public void setStatusCode(String statusCode) {
this.statusCode = statusCode;
}
@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}
@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}
}
package com.example;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"issue_date",
"father/husband",
"name",
"img",
"blood_group",
"dob",
"validity",
"cov_details",
"dl_number",
"address"
})
public class Result_ {
@JsonProperty("issue_date")
private String issueDate;
@JsonProperty("father/husband")
private String fatherHusband;
@JsonProperty("name")
private String name;
@JsonProperty("img")
private String img;
@JsonProperty("blood_group")
private String bloodGroup;
@JsonProperty("dob")
private String dob;
@JsonProperty("validity")
private Validity validity;
@JsonProperty("cov_details")
private List<CovDetail> covDetails = null;
@JsonProperty("dl_number")
private String dlNumber;
@JsonProperty("address")
private String address;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
@JsonProperty("issue_date")
public String getIssueDate() {
return issueDate;
}
@JsonProperty("issue_date")
public void setIssueDate(String issueDate) {
this.issueDate = issueDate;
}
@JsonProperty("father/husband")
public String getFatherHusband() {
return fatherHusband;
}
@JsonProperty("father/husband")
public void setFatherHusband(String fatherHusband) {
this.fatherHusband = fatherHusband;
}
@JsonProperty("name")
public String getName() {
return name;
}
@JsonProperty("name")
public void setName(String name) {
this.name = name;
}
@JsonProperty("img")
public String getImg() {
return img;
}
@JsonProperty("img")
public void setImg(String img) {
this.img = img;
}
@JsonProperty("blood_group")
public String getBloodGroup() {
return bloodGroup;
}
@JsonProperty("blood_group")
public void setBloodGroup(String bloodGroup) {
this.bloodGroup = bloodGroup;
}
@JsonProperty("dob")
public String getDob() {
return dob;
}
@JsonProperty("dob")
public void setDob(String dob) {
this.dob = dob;
}
@JsonProperty("validity")
public Validity getValidity() {
return validity;
}
@JsonProperty("validity")
public void setValidity(Validity validity) {
this.validity = validity;
}
@JsonProperty("cov_details")
public List<CovDetail> getCovDetails() {
return covDetails;
}
@JsonProperty("cov_details")
public void setCovDetails(List<CovDetail> covDetails) {
this.covDetails = covDetails;
}
@JsonProperty("dl_number")
public String getDlNumber() {
return dlNumber;
}
@JsonProperty("dl_number")
public void setDlNumber(String dlNumber) {
this.dlNumber = dlNumber;
}
@JsonProperty("address")
public String getAddress() {
return address;
}
@JsonProperty("address")
public void setAddress(String address) {
this.address = address;
}
@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}
@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}
}
package com.example;
import java.util.HashMap;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"non-transport",
"transport"
})
public class Validity {
@JsonProperty("non-transport")
private String nonTransport;
@JsonProperty("transport")
private String transport;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
@JsonProperty("non-transport")
public String getNonTransport() {
return nonTransport;
}
@JsonProperty("non-transport")
public void setNonTransport(String nonTransport) {
this.nonTransport = nonTransport;
}
@JsonProperty("transport")
public String getTransport() {
return transport;
}
@JsonProperty("transport")
public void setTransport(String transport) {
this.transport = transport;
}
@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}
@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}
}
然后您可以通过运行以下代码将 Json 序列化为 Java 对象:
final ObjectMapper objectMapper = new ObjectMapper();
final Result result = objectMapper.readValue(json, Result.class);
json 变量指的是您的 Json 数据。拥有 Java 对象后,您可以简单地使用 getter 和 setter 来根据需要调整对象。
result.setRequestId("Test");
如果您想编辑 img 属性:
result.getResult().setImg("N/A");
如果您想将 Java 对象转换回 Json,您可以执行以下操作:
final ObjectMapper mapper = new ObjectMapper();
final String jsonString = mapper.writeValueAsString(result);
Java 类的来源:http://www.jsonschema2pojo.org/