json에 이미지를 포함시켜서 저장하고 싶습니다.


public void EnollmentUser() {

    JSONObject mDataJO = new JSONObject();

    String adress = etmapname.getText().toString();
    String adress_descript = etadress.getText().toString();
    String roomInfo = etroomInfo.getText().toString();
    String described = etdescribed.getText().toString();
    int deposit = Integer.parseInt(etPrice.getText().toString());
    int monthly_rent = Integer.parseInt(etmonthly_rent.getText().toString());
    int acreage = Integer.parseInt(etacreage.getText().toString());

    try {
        mDataJO.put("adress",adress);
        mDataJO.put("adress_descript",adress_descript);
        mDataJO.put("deposit",deposit);
        mDataJO.put("roomInfo",roomInfo);
        mDataJO.put("described",described);
        mDataJO.put("monthly_rent",monthly_rent);
        mDataJO.put("acreage",acreage);
        Log.e("dh","server req:\n"+mDataJO.toString());
    } catch (JSONException e) {
        e.printStackTrace();
    }

안드로이드를 배운지 별로안된 학생입니다. 지금 json을 찾으면서 공부해보고있는데요. 코드의 값처럼 이미지도 입력을 하고싶습니다. 이미지를 코드처럼 하려면 어떻게 쓰고 작성해야하나요?


조회수 139


1 답변


좋아요
0
싫어요
채택취소하기

이미지 전송은 이미지를 바이트 배열로 변환 후 이 데이터를 Base64 문자열로 인코딩 한 다음 JSON의 value로 전달하면 됩니다. (말이 조금 복잡한데, 아래 코드를 보는 것이 이해가 더 빠를 수 있을 것 같습니다.)

관련 코드는 아래 함수를 참고하시면 됩니다. (출서 - http://stackoverflow.com/a/30824334/3275152)

private String getStringFromBitmap(Bitmap bitmapPicture) {
    String encodedImage;
    ByteArrayOutputStream byteArrayBitmapStream = new ByteArrayOutputStream();
    bitmapPicture.compress(Bitmap.CompressFormat.PNG, 100, byteArrayBitmapStream);
    byte[] b = byteArrayBitmapStream.toByteArray();
    encodedImage = Base64.encodeToString(b, Base64.DEFAULT);
    return encodedImage;
}  

위 함수에서 반환된 문자열을 mDataJO.put("adress",adress);처럼 사용하시면 되고요. 링크로 남긴 스택오버플로우를 보시면 역변환하는 방법도 있으니 필요하다면 확인해보세요.


로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close