我有一个json对象
data = {
'ad': {
"date":"2013-06-05",
"catagory":"6",
"subcatagory":"5",
"text":"John john",
"ssn":"1306743999",
"email":"jonbrynjar@365.is",
"phone":"8612001"
},
'cc-info': {
"amount": "70",
"cardNumber": "4222222222222",
"expiryDate": "1215",
"currency": "ISK"
},
'dates': [
{ 'date': '2013-06-18', 'media': 1 },
{ 'date': '2013-06-19', 'media': 3 }
]
}
然后我有一个子流,它接受该json对象的“cc-info”部分并使用该数据来调用第三方服务。 要提取json对象的“cc-info”部分,我使用@JsonAutoDetect类
@JsonAutoDetect
public class Handpoint {
private String amount;
private String cardNumber;
private String expiryDate;
private String currency;
public String getAmount() { return this.amount; }
public void setAmount(String amount) { this.amount = amount; }
public String getCardNumber() { return this.cardNumber; }
public void setCardNumber(String cardNumber) { this.cardNumber = cardNumber; }
public String getExpiryDate() { return this.expiryDate; }
public void setExpiryDate(String expireDate) { this.expiryDate = expireDate; }
public String getCurrency() { return this.currency; }
public void setCurrency(String currency) { this.currency = currency; }
}
当我发送整个json对象时,我收到一个错误。 问题是:我是否必须将json对象中的每个变量都放入我的@JsonAutoDetect类中? 或者最佳做法是什么。 我已经验证了我的代码在我发送json objcet的“cc-info”部分时有效。
答案 0 :(得分:0)
有一种更简单的方法可以将JSON元素转换为一系列对象。您是否尝试过Google GSon 库?有一个样本:
import com.google.gson.Gson;
Gson gson = new Gson();
Handpoint testing = gson.fromJson(data, Handpoint.class);
System.out.println("Amount: " + testing.getAmount());
另一方面,如果你想反序列化包含数组的日期,你最好看看这里: Gson Array deserialization
答案 1 :(得分:0)
您不需要@JsonAutoDetect
,它与没有参数的默认值没有任何不同。
但如果您的问题是您是否可以忽略未知属性,那么答案是肯定的。 Here有两种方式。
例如:
mapper.disable(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES);
会做到这一点。