0

Stringこの形式のArrayを オブジェクトのに変換する必要があります。

[{name=Nancy Chapman, email=nchapman0@comcast.net}, {name=Jimmy Fisher, email=jfisher1@photobucket.com}]

完全に手動で行うことなく、これを変換する簡単な方法はありますか?

更新: カスタム SQL データベース (Amazon Athena) からこれらの値を取得しています。また、カスタムJDBCはサポートしていないため、 ofgetArray()を含む列を手動で解析する必要があるようです。残念ながら、これは DB の制限であり、私には制御できません。これは、列を呼び出したときに SQL データベースが返す形式です。ArrayStructsgetString()

SQL テーブル定義

 id (int)
 threadid (int)
 senderemail (string)
 sendername (string)
 subject (string)
 body (string)
 recipients (array<struct<name:string,email:string>>)
 ccrecipients (array<struct<name:string,email:string>>)
 bccrecipients (array<struct<name:string,email:string>>)
 attachments (array<binary>)
 date (timestamp)

Java オブジェクト

MessageObj

public class MessageObj {

private int id;
private int threadId;
private String senderEmail;
private String senderName;
private String subject;
private String body;
private List<RecipientObj> recipients;
private List<RecipientObj> ccRecipients;
private List<RecipientObj> bccRecipients;
private List<File> attachments;
private Calendar date;
}

RecipientObj

public class RecipientObj {
private String email;
private String name;
}

データの解析。

ResultSet rs = statement.executeQuery(sql);

while (rs.next()) {
// Retrieve table column.
int id = rs.getInt("id");
Integer threadId = rs.getInt("threadid");
String senderEmail = rs.getString("senderemail");
String senderName = rs.getString("sendername");
String subject = rs.getString("subject");
String body = rs.getString("body");

//How to convert recipients into ArrayList? rs.getArray("recipients") not supported.
//... Code here to add into an ArrayList of MessageObj.
}
4

1 に答える 1