如何通过JSON在服务器响应中传递图像?Base64?

9 投票
2 回答
22754 浏览
提问于 2025-04-16 12:10

在我的安卓应用中,我在一个列表里展示一些用户的信息。我想显示用户的头像、名字和姓氏。目前只显示了名字和姓氏,我想加上头像。服务器(用Python写的)返回给我的数据格式是这样的:

[{"profil":"first_name": "Jim", "last_name": "Carrey"}}, "_id": {"$oid": "4d595cda1d41c81536000000"}}, {"profil":{"first_name": "Mathieu", "last_name": "Polnari"}}, "_id": {"$oid": "4d5916581d41c80e88000000"}}, {"profil": {"first_name": "Vincent", "last_name": "Fatou"}}, "_id": {"$oid": "4d58fc7e1d41c8090e000000"}}...] 

如果能在这个JSON数据里加一个参数来表示头像,那就更好了。

你觉得把头像作为字符串放在JSON里,然后用Base64来解码,这个主意怎么样?

2 个回答

8

我建议你可以添加一个JSON参数,这个参数里面包含一个资源的链接。

为了增加安全性,你可以通过给资源添加一个带盐的md5加密校验和来创建加密链接,比如 http://server.com/images/1234567890123456789012345678901234567890/image.jpg - 这是facebook.com使用的方法。

12

从技术上讲,把二进制数据编码成base64字符串并放进JSON里是完全可以的。

不过,正如@servermanfail提到的,直接在JSON里放图片链接,然后再下载这些图片可能会更好。

这样做的好处是传输的大小和速度,因为base64编码后的数据比原来的二进制数据大了四分之三(多了33%的开销)。

另外,这样你还可以缓存图片。

撰写回答