Xenon54
110
2019-02-26 10:23:50
11
755

안드로이드 JSON 값을 String 으로 바꾸기.


안드로이드에서 JSONArray 의 값을 추출해서 String 값으로 가져오려고 하는데요.

org.json.JSONException: Value 37.4831358 at 0 of type java.lang.String cannot be converted to JSONObject

이렇게 오류만 나옵니다. 저 Value 값을 String 으로 변환할수없다는것인거 같은데, 이게 왜 변환이 안되는지를 모르겠습니다... String.VaiueOf() , .toString 2개다 붙이든 안붙이든 오류가 변하지 않습니다...

혹시 이유가 무었일까요...? ㅠㅠ

map.put("LocX", RCX.getJSONObject(gh));

이렇게 해서 하고있었습니다만,,, 저 String 으로 변환하는 부분의 오류인것이 점점 확실해 지고 있어서... 무었을 빼먹은 걸까요...ㅠㅠ

0
0
  • 답변 11

  • redeye0922
    910
    2019-02-26 10:39:12

    map은 Map<String, String> 형태인가요? Map<String, Object> 형태인가요?

    0
  • 유키
    569
    2019-02-26 10:43:00

    자세한 내역은 모르겠지만 오류 코드를 반대로 이해하신 것 같은데...

    String 을 JSONObject 로 변환할 수 없다는 에러 아닌가요?

    0
  • Xenon54
    110
    2019-02-26 10:45:27

    일단 형태는 Sting, Object형태입니다.

    유키님 말이 맞다면 문제가 더욱 심각해집니다... 지금 그 동작을 원한게 아니라서... 반대로 동작하는겁니다... 만약그런거면...ㅠㅠ

    0
  • Xenon54
    110
    2019-02-26 10:45:47
    ArrayMap<String, Object> map = new ArrayMap<>();
    0
  • 임뫜
    745
    2019-02-26 10:51:19

    저도 유키님과 같은 의견입니다. 

    String 유형의 해당 값은 JSONObject로 변환할 수 없다.

    0
  • Xenon54
    110
    2019-02-26 10:56:48

    그러면 이게 아니라는 뜻이 되는데요...

    지금 코드랑 상반된 오류가 나와버리는데요... 이러면 아예 모르겠는데...

    왜 JSONObject 값으로 변환하는거죠? 왜 반대로 되는거죠...? 전혀 감도 안오네요 이건...ㅠㅠ

    0
  • 임뫜
    745
    2019-02-26 10:59:11

    Xenon54 

    해당 데이터가 왔다 갔다하는 흐름을 다시 한번 보셔야 할듯 하네요. 처음부터요.

    차근차근 보시면 어느 한곳에 오류를 발견할 수도 있어요. 화이팅입니다!

    0
  • Xenon54
    110
    2019-02-26 11:03:32

    으허엉 그걸 모르겠단 말이죠...ㅠㅠ

    어디선가 심각하게 꼬였다는거는 알겠는데... 이걸 찾아달라고 할수도 없고...ㅠㅠ

    {"road0":[{"LocX":["37.4831358","37.4831501","37.4831787","37.48316124377251","37.48334853631973","37.4831748","37.48341212793185","37.4834757831356"],"LocY":["127.0443221","127.0442846","127.0443232","127.04433236271144","127.04457678362621","127.0443029","127.04465692133385","127.04473713924745"]}]}

    이 값에서 껍질 한번 벗겨서
    road0:[{"LocX":["37.4831358","37.4831501","37.4831787","37.48316124377251","37.48334853631973","37.4831748","37.48341212793185","37.4834757831356"],"LocY":["127.0443221","127.0442846","127.0443232","127.04433236271144","127.04457678362621","127.0443029","127.04465692133385","127.04473713924745"]}]
    이렇게 만들고 
    그다음에 저기서
    ["37.4831358","37.4831501","37.4831787","37.48316124377251","37.48334853631973","37.4831748","37.48341212793185","37.4834757831356"]

    ["127.0443221","127.0442846","127.0443232","127.04433236271144","127.04457678362621","127.0443029","127.04465692133385","127.04473713924745"]'

    이렇게 분해한놈이 저기서만 안되서 답답해서 그랬어요...

    0
  • redeye0922
    910
    2019-02-26 11:14:58 작성 2019-02-26 11:16:28 수정됨

    RCX.getJSONObject(gh) <--- 이게 ["37.4831358","37.4831501","37.4831787","37.48316124377251","37.48334853631973","37.4831748","37.48341212793185","37.4834757831356"] 란소린가요?

    JSONObject 형태는 {"":""} 이고 ["","",""] 는 배열형태이네요 배열은 String 형태가아니죠

    0
  • Xenon54
    110
    2019-02-26 11:28:42

    그럼 아예 틀린거 같네요....

    지금 RCX.getJSONArray(gh) 로 넣어도 W/System.err: org.json.JSONException: Value 37.4831055 at 0 of type java.lang.String cannot be converted to JSONArray

    이 오류만 나오고... 오브젝트면 저부분만 바뀌고...

    배열은 당연히 스트링 형태가 아니고... 저렇게 추출하면 저 값중 하나 뽑아오는데 그게 안된다고 나오고 있는거 같습니다. 오류 메세지는... 그냥 다 뜯어고치는게 빠를거 같군요...

    0
  • NPC
    215
    2019-02-26 12:52:10 작성 2019-02-26 12:52:33 수정됨

    최초 JSON 값이 response 라고 가정했을때


    JSONArray jsonArray = response.getJSONArray("road0");

    for (int i = 0; i < jsonArray.length(); i++) {
    JSONObject jsonObject = jsonArray.getJSONObject(i);

    JSONArray jsonLocXArray = jsonObject.getJSONArray("LocX");
    for (int j = 0; j < jsonLocXArray.length(); j++) {
    String locX = jsonLocXArray.getString(j);
    }

    JSONArray jsonLocYArray = jsonObject.getJSONArray("LocY");
    for (int j = 0; j < jsonLocYArray.length(); j++) {
    String locY = jsonLocYArray.getString(j);
    }
    }
    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.