[英]JSON to Java Object parsing
我正在从AWS SQS接收以下提到的JSON字符串作为响应。 当我尝试对此进行解析并使用Jackson readValue()
将其序列化/反序列化为Java对象时,我将该对象获取为null
:
RootObject [type=null, messageId=null, topicArn=null, message=null, timestamp=null, signatureVersion=null, signature=null, signingCertURL=null, unsubscribeURL=null]
我正在使用的代码是这样的:
ObjectMapper objectMapper = new ObjectMapper();
RootObject rootObj = objectMapper.readValue(jsonString, RootObject.class);
JSON字符串:
{
"Type" : "Notification",
"MessageId" : "5d8da694-f227-55d7-9c99-f76b4344e0cf",
"TopicArn" : "arn:aws:sns:us-east-1:301793434032:MyTestTopic",
"Message" : "{\"notificationType\":\"Delivery\",\"mail\":{\"timestamp\":\"2017-08-05T06:06:53.319Z\",\"source\":\"sunnydiatm@gmail.com\",\"sourceArn\":\"arn:aws:ses:us-east-1:501790854032:identity/sunnydiatm@gmail.com\",\"sourceIp\":\"103.68.178.205\",\"sendingAccountId\":\"400920854032\",\"messageId\":\"0100015db345e987-e0bad5bc-0494-4f7d-bd07-7915281d67b2-000000\",\"destination\":[\"sunnydir@gmail.com\"]},\"delivery\":{\"timestamp\":\"2017-08-05T06:06:59.411Z\",\"processingTimeMillis\":6092,\"recipients\":[\"sunnydier@gmail.com\"],\"smtpResponse\":\"250 2.0.0 OK 1501913219 i194si2321639qki.188 - gsmtp\",\"remoteMtaIp\":\"2.85.232.26\",\"reportingMTA\":\"a8-96.smtp-out.amazonses.com\"}}",
"Timestamp" : "2017-08-05T06:06:59.465Z",
"SignatureVersion" : "1",
"Signature" : "XBQ/sIr23r23tEOzSkNX+0h9lD/kCXl8Hfu+rIlhIS3DIuc4545tkzA+YPYwruJtRR+tLvIZkfyTmL5f4W6eghaXOb8XsugeNFkHkpF52zEuttOi3YUTv8RJmXHnWYhOSK7s9RUNpsrY8toQJyY+r1aNZPnVg8MwJBmJzb5RMssdwHYhSvDCmqH2gKsouufAVFnnSz0md1dKgaEg8kv1h8Fs3Qs7hnbsgaeWStQV0XB8unrJ0mAlIaAqaULuwlSgP8c8PpogLF6lZrDm5LcmDvVJrmwxGpS8uQ3l0pDOeYd/tyRTfsRpc3bZuImH2/9uxX1KmT+wP+X/9NdOz34TQyA==",
"SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-b95095beb82e8fasdf46b3aafc7f4149a.pem",
"UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:401792344032:MyTestTopic:c10afa38-f9f8-4a03-86b3-2e83565b5f12"
}
我的父母班级如下:
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties(ignoreUnknown = true)
public class RootObject
{
private String type;
private String messageId;
private String topicArn;
private Message message;
private Date timestamp;
private String signatureVersion;
private String signature;
private String signingCertURL;
private String unsubscribeURL;
//getter & setters
}
我的Message类包含以下变量:
public class Message
{
private Mail mail;
private Bounce bounce;
private String notificationType;
//getter & setters
}
关联的类也会生成并保存在类路径中。
我需要将JSON字符串转换为Java对象,以便可以对此执行操作。
使用以下依赖项:
compile 'com.squareup.retrofit2:retrofit:2.0.2'
compile 'com.squareup.retrofit2:converter-gson:2.0.2'
并在有问题的情况下查看此代码,即可正常运行Android-Retrofit2-java.security.cert.CertPathValidatorException:找不到证书路径的信任锚
而不是POJO类编写以下代码:
public class MyObject {
@SerializedName("Type")
@Expose
private String type;
@SerializedName("MessageId")
@Expose
private String messageId;
@SerializedName("TopicArn")
@Expose
private String topicArn;
@SerializedName("Message")
@Expose
private String message;
@SerializedName("Timestamp")
@Expose
private String timestamp;
@SerializedName("SignatureVersion")
@Expose
private String signatureVersion;
@SerializedName("Signature")
@Expose
private String signature;
@SerializedName("SigningCertURL")
@Expose
private String signingCertURL;
@SerializedName("UnsubscribeURL")
@Expose
private String unsubscribeURL;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getMessageId() {
return messageId;
}
public void setMessageId(String messageId) {
this.messageId = messageId;
}
public String getTopicArn() {
return topicArn;
}
public void setTopicArn(String topicArn) {
this.topicArn = topicArn;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getTimestamp() {
return timestamp;
}
public void setTimestamp(String timestamp) {
this.timestamp = timestamp;
}
public String getSignatureVersion() {
return signatureVersion;
}
public void setSignatureVersion(String signatureVersion) {
this.signatureVersion = signatureVersion;
}
public String getSignature() {
return signature;
}
public void setSignature(String signature) {
this.signature = signature;
}
public String getSigningCertURL() {
return signingCertURL;
}
public void setSigningCertURL(String signingCertURL) {
this.signingCertURL = signingCertURL;
}
public String getUnsubscribeURL() {
return unsubscribeURL;
}
public void setUnsubscribeURL(String unsubscribeURL) {
this.unsubscribeURL = unsubscribeURL;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.