使用java将javax.mail.BodyPart对象转换为Json字符串

时间:2016-04-13 10:36:41

标签: java json javamail

我可以使用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)

0 个答案:

没有答案