使用 GSON 解析整个 AWS SQS 记录
Parsing Entire AWS SQS Record using GSON
我一直在尝试解析这条消息,但没有成功。使用 AWS 简单队列服务 API,我按照说明进行了以下操作...
for(Message m : Messages){
System.out.println(m.getBody());
}
这个returns这个结构中的一个JSON字符串:
{
"Records": [
{
"EventSource": "",
"EventVersion": "",
"EventSubscriptionArn": "",
"Sns": {
"Type": "",
"MessageId": "",
"TopicArn": "",
"Subject": null,
"Message": ""
"Timestamp": "",
"SignatureVersion": "",
"Signature": "”
"SigningCertUrl": "",
"UnsubscribeUrl": "",
"MessageAttributes": {}
}
}
]
}
我一直在尝试使用 GSON 将整个内容解析为 Java 对象,以便我可以提取 "Message" 参数(其中还包含 JSON),然后使用 GSON解析它(当我直接传递该文本时完成并工作)。
这些是我设置的 类,但这不起作用 -- 每个都有 public getter 和 setter.....
记录 Class:
public class Records {
public ArrayList<ExceptionMessages> exceptionMessages = new ArrayList<ExceptionMessages>();
public ArrayList<ExceptionMessages> getExceptionMessages() {
return exceptionMessages;
}
public void setExceptionMessages(ArrayList<ExceptionMessages> exceptionMessages) {
this.exceptionMessages = exceptionMessages;
}
留言Class:
public class ExceptionMessages {
public String EventSource;
public String EventVersion;
public String EventSubscriptionArn;
public Sns messageJSON;
}
Sns Class(消息存储位置):
public class Sns {
public String Type;
public String MessageId;
public String TopicArn;
public String Subject;
public String Message;
public String Timestamp;
public String SignatureVersion;
public String Signature;
public String SigningCertUrl;
public String UnsubscribeUrl;
public String MessageAttributes;
}
我在尝试 .get(0)
ArrayList 时遇到空指针异常,因此它是空的并且没有进行解析。
我是这样称呼它的……
我正在将 m.getBody()
发送到解析方法并尝试像这样解析:
Gson gson = new Gson();
Records record = new Records();
gson.fromJson(JSONString.replaceAll("\s+", ""), Records.class);
结构应该是
class RecordContainer {
ArrayList<Record> Records;
}
class Record {
public String EventSource;
public String EventVersion;
public String EventSubscriptionArn;
public Sns Sns;
}
class Sns {
public String Type;
public String MessageId;
public String TopicArn;
public String Subject;
public String Message;
public String Timestamp;
public String SignatureVersion;
public String Signature;
public String SigningCertUrl;
public String UnsubscribeUrl;
public MessageAttributes MessageAttributes;
}
我一直在尝试解析这条消息,但没有成功。使用 AWS 简单队列服务 API,我按照说明进行了以下操作...
for(Message m : Messages){
System.out.println(m.getBody());
}
这个returns这个结构中的一个JSON字符串:
{
"Records": [
{
"EventSource": "",
"EventVersion": "",
"EventSubscriptionArn": "",
"Sns": {
"Type": "",
"MessageId": "",
"TopicArn": "",
"Subject": null,
"Message": ""
"Timestamp": "",
"SignatureVersion": "",
"Signature": "”
"SigningCertUrl": "",
"UnsubscribeUrl": "",
"MessageAttributes": {}
}
}
]
}
我一直在尝试使用 GSON 将整个内容解析为 Java 对象,以便我可以提取 "Message" 参数(其中还包含 JSON),然后使用 GSON解析它(当我直接传递该文本时完成并工作)。
这些是我设置的 类,但这不起作用 -- 每个都有 public getter 和 setter.....
记录 Class:
public class Records {
public ArrayList<ExceptionMessages> exceptionMessages = new ArrayList<ExceptionMessages>();
public ArrayList<ExceptionMessages> getExceptionMessages() {
return exceptionMessages;
}
public void setExceptionMessages(ArrayList<ExceptionMessages> exceptionMessages) {
this.exceptionMessages = exceptionMessages;
}
留言Class:
public class ExceptionMessages {
public String EventSource;
public String EventVersion;
public String EventSubscriptionArn;
public Sns messageJSON;
}
Sns Class(消息存储位置):
public class Sns {
public String Type;
public String MessageId;
public String TopicArn;
public String Subject;
public String Message;
public String Timestamp;
public String SignatureVersion;
public String Signature;
public String SigningCertUrl;
public String UnsubscribeUrl;
public String MessageAttributes;
}
我在尝试 .get(0)
ArrayList 时遇到空指针异常,因此它是空的并且没有进行解析。
我是这样称呼它的……
我正在将 m.getBody()
发送到解析方法并尝试像这样解析:
Gson gson = new Gson();
Records record = new Records();
gson.fromJson(JSONString.replaceAll("\s+", ""), Records.class);
结构应该是
class RecordContainer {
ArrayList<Record> Records;
}
class Record {
public String EventSource;
public String EventVersion;
public String EventSubscriptionArn;
public Sns Sns;
}
class Sns {
public String Type;
public String MessageId;
public String TopicArn;
public String Subject;
public String Message;
public String Timestamp;
public String SignatureVersion;
public String Signature;
public String SigningCertUrl;
public String UnsubscribeUrl;
public MessageAttributes MessageAttributes;
}