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

조회수 9457회
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을 찾으면서 공부해보고있는데요. 코드의 값처럼 이미지도 입력을 하고싶습니다. 이미지를 코드처럼 하려면 어떻게 쓰고 작성해야하나요?

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 이미지 전송은 이미지를 바이트 배열로 변환 후 이 데이터를 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);처럼 사용하시면 되고요. 링크로 남긴 스택오버플로우를 보시면 역변환하는 방법도 있으니 필요하다면 확인해보세요.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)