我可以使用JavaMail API从电子邮件帐户下载附件。在下载附件的过程中,我得到了一个BodyPart对象列表,它实际上是附件。以下函数返回BodyPart对象列表:
private List<BodyPart> getBodyParts(Message message) throws Exception {
Multipart multipart = (Multipart) message.getContent();
// System.out.println(multipart.getCount());
List<BodyPart> result = new ArrayList<BodyPart>();
for (int i = 0; i < multipart.getCount(); i++) {
BodyPart bodyPart = multipart.getBodyPart(i);
if(!Part.ATTACHMENT.equalsIgnoreCase(bodyPart.getDisposition()) &&
!isNotBlank(bodyPart.getFileName())) {
continue; // dealing with attachments only
}
else result.add(bodyPart);
}
return result;
} 我想将此BodyPart对象列表(即List&lt; BodyPart&gt;结果)转换为Json Sting列表。我会高度赞赏任何形式的帮助或建议。
我尝试使用以下代码部分中的com.google.gson.Gson将BodyPart对象转换为Json对象。
Gson gson = new Gson();
List<String> resultJson;
List<String> resultJson = new ArrayList<String>();
for (BodyPart bodyPart : result) {
String json = gson.toJson(bodyPart);
resultJson.add(json);
}
但面对以下错误。无法正确找出确切原因。 这是堆栈跟踪的第几行。
debugMessage":"java.lang.StackOverflowError","stackTrace":"java.lang.StackOverflowError
com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:371)
com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)