Я безуспешно пытаюсь разобрать это сообщение.Используя API AWS Simple Queue Service, я следую инструкциям и делаю следующее ...
for(Message m : Messages){
System.out.println(m.getBody());
}
Возвращает строку JSON в этой структуре:
{
"Records": [
{
"EventSource": "",
"EventVersion": "",
"EventSubscriptionArn": "",
"Sns": {
"Type": "",
"MessageId": "",
"TopicArn": "",
"Subject": null,
"Message": ""
"Timestamp": "",
"SignatureVersion": "",
"Signature": "”
"SigningCertUrl": "",
"UnsubscribeUrl": "",
"MessageAttributes": {}
}
}
]
}
Я пыталсяпроанализируйте всю эту вещь в Java-объект, используя GSON, чтобы я мог извлечь параметр «Сообщение» (который также содержит JSON), а затем использовать GSON для анализа этого (сделано и работает, когда я просто передаю этот текст напрямую).
Это классы, которые я настроил, но это не будет работать - у каждого есть общедоступные методы получения и установки .....
Класс записей:
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;
}
Класс сообщения:
public class ExceptionMessages {
public String EventSource;
public String EventVersion;
public String EventSubscriptionArn;
public Sns messageJSON;
}
Класс Sns (где хранится сообщение):
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);