对于我正在开发的Android应用程序,我希望能够使用Volley发送带有身体字节流的REST POST,其中身体字节流包含设备上的许多照片。
我正在使用Gson序列化对象列表。在我的Volley Request getBody()
方法中,例如像这样:
final Set<MySession> sessions;
....
new Gson().toJson(sessions).getBytes();
其中MySession
看起来像:
public class MySession {
....
private Set<MyDefect> defects;
....
}
public class MyDefect {
...
private Set<String> photoPaths;
...
}
我所能进行的工作到一定程度为止:进行了REST
调用,并且会话/缺陷几乎完全按照我的意愿进行了序列化。我唯一要更改的是,当会话/缺陷由Gson序列化时,不是序列化照片路径,而是序列化了对应图像的字节数组?
因此,发送的JSON类似于:
[{
....
"defects":
[ {
....
"photos": [ [byte-array-for-photo-1],[byte-array-for-photo-2].....],....
}
即“ photoPath”位已由“照片”代替。
我知道您可以将Gson与自定义序列化程序一起使用,以便读入每个图像@ photoPath的字节数组并将其添加为序列化的属性,但我不必将大图像字节数组加载到内存中。我想做的是以某种方式能够“注入”字节对象流作为序列化的一部分?
我还知道您可以将JsonWriters和Appenders与toJson一起使用:我不确定是否可以将它们与自定义序列化程序结合使用来完成我想做的事情? (还是我还没有意识到另一种方法?)
欢迎任何建议! 亲切的问候, 迈克·比尔