다음과 같은 JSON이 있습니다.
{
"MeterRates": {
"0": 0.142,
"1024": 0.142,
"51200": 0.142,
"512000": 0.142,
"1024000": 0.1278,
"5120000": 0.1051
}
}
이 JSON은 실제로 더 큰 JSON 파일의 일부이며 역 직렬화하는 데 어려움이있는 부분 만 추출했습니다. 이것을 Java 객체로 역 직렬화해야합니다. 다음 클래스를 사용하여 시도했지만 null
모든 키에 대한 값을 제공합니다.
public class MeterRates {
private Double rate0;
private Double rate1024;
private Double rate51200;
private Double rate512000;
private Double rate1024000;
private Double rate5120000;
@JsonProperty("0")
public Double getRate0() {
return rate0;
}
public void setRate0(Double rate0) {
this.rate0 = rate0;
}
@JsonProperty("1024")
public Double getRate1024() {
return rate1024;
}
public void setRate1024(Double rate1024) {
this.rate1024 = rate1024;
}
@JsonProperty("51200")
public Double getRate51200() {
return rate51200;
}
public void setRate51200(Double rate51200) {
this.rate51200 = rate51200;
}
@JsonProperty("512000")
public Double getRate512000() {
return rate512000;
}
public void setRate512000(Double rate512000) {
this.rate512000 = rate512000;
}
@JsonProperty("1024000")
public Double getRate1024000() {
return rate1024000;
}
public void setRate1024000(Double rate1024000) {
this.rate1024000 = rate1024000;
}
@JsonProperty("5120000")
public Double getRate5120000() {
return rate5120000;
}
public void setRate5120000(Double rate5120000) {
this.rate5120000 = rate5120000;
}
@Override
public String toString() {
return "MeterRates [0 = " + rate0 + " 1024 = " + rate1024 + " 51200 = " + rate51200 + " 512000 = " + rate512000 + " 1024000 = " + rate1024000
+ " 5120000 = " + rate5120000 + "]";
}
}
비슷한 요구 사항 이있는이 질문 을 참조하려고했지만 어떻게해야하는지 알 수 없었습니다.
업데이트 1 :
역 직렬화하는 데 사용하는 코드는 다음과 같습니다. 여기서 클래스를 다음과 같이 전달합니다 MeterRates.class
.
public static <T> T unmarshalJSON(HttpEntity entity, Class<T> clazz) {
InputStream is = null;
try {
return new Gson().fromJson(EntityUtils.toString(entity), clazz);
} catch (ParseException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
try {
if (null != is) {
is.close();
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
Gson (JSON 매퍼)이 클래스에 Jackson 주석 (다른 JSON 매퍼) 주석을 달아 객체를 역 직렬화하는 방법에 영향을 미치려고합니다.
그것은 작동 할 수 없습니다. Gson은 Jackson 주석에 관심이 없습니다.
이러한 주석을 고려하려면 Jackson을 사용하여 JSON을 역 직렬화하십시오. 다음은 Jackson을 사용하여 객체를 직렬화 및 역 직렬화하는 완전한 예제입니다 (필드 유형을 Double로 변경했습니다.
MeterRates rates = new MeterRates();
rates.setRate1024(0.7654);
rates.setRate51200(0.4567);
ObjectMapper objectMapper = new ObjectMapper();
String s = objectMapper.writeValueAsString(rates);
System.out.println("s = " + s);
MeterRates m = objectMapper.readValue(s, MeterRates.class);
System.out.println("m = " + m);
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다