我在解析Json缓冲区数据到图像时遇到了麻烦。
这是我的Node.js代码和数据。我使用res.send(docs)将它发送到我的应用程序。
query.find({}, function(err, docs){
if(!err){
console.log(docs);
res.send(docs);
}
});
{ _id: 555ee1f5be40576c28c3e228,
email: 'hh@hh.h',
pw: 'aa',
name: 'jimy',
phone: '22222222222',
__v: 0,
img:
{ _bsontype: 'Binary',
sub_type: 0,
position: 4146282,
buffer: <Buffer ff d8 ff e1 96 f8 45 78 69 66 00 00 4d 4d 00 2a 00 00...}
}
这是我的Android应用程序代码。我使用了AsyncHttpClient。
HttpClient.post("getMember/", param, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
JSONArray jarr;
JSONObject obj;
try {
jarr = new JSONArray(new String(responseBody));
obj = jarr.getJSONObject(0);
email_edt.setText(obj.get("email").toString());
pw_edt.setText(obj.get("pw").toString());
name_edt.setText(obj.get("name").toString());
phone_edt.setText(obj.get("phone").toString());
}
}
}
此代码适用于没有img字段的文档。但当它得到包括img在内的响应时,需要很长时间,并且会触发“OutOfMemory”错误。 我不使用obj.get(“img”),只需获取responseBody并将其解析为JSONObject。 文件的大小约为4BM,它不是太大,但在我的android工作室中,如下所示多次登录。
Grow heap (frag case) to 131.704MB for 38189042-byte allocation
05-29 17:38:51.097 17193-17193/com.capstone.bookkeepingproto2 D/dalvikvm﹕ GC_FOR_ALLOC freed 26910K, 42% free 107442K/183252K, paused 266ms, total 266ms
05-29 17:38:52.177 17193-17193/com.capstone.bookkeepingproto2 D/dalvikvm﹕ GC_FOR_ALLOC freed 8192K, 42% free 107442K/183252K, paused 277ms, total 277ms
05-29 17:38:53.257 17193-17193/com.capstone.bookkeepingproto2 D/dalvikvm﹕ GC_FOR_ALLOC freed 8192K, 42% free 107442K/183252K, paused 282ms, total 282ms
请帮助我。