2013-07-29 3 views
1

웹 서비스를 호출하고이 JSON을 수신하지만 JSONObject 클래스를 인스턴스화하는 중 오류가 발생했습니다. 이유는 생각할 수없는 페르시아어 문자 (UTF-8)가 포함되어 있습니다. 이 문제Json parsing in android 2

JSON :

{"teriffs": [ 
{"name":"برنز","id":"1000","prices":"3;400000-12;600000"}, 
{"name":"برنز","id":"1000","prices":"3;400000-12;600000"}, 
{"name":"نقره ای","id":"1002","prices":"3;700000-12;1000000"}, 
{"name":"نقره ای","id":"1002","prices":"3;700000-12;1000000"}] 
} 

ERROR :

org.json.JSONException: Value {"teriffs": [{"name":"برنز","id":"1000","prices":"3;400000-12;600000"},{"name":"برنز","id":"1000","prices":"3;400000-12;600000"},{"name":"نقره ای","id":"1002","prices":"3;700000-12;1000000"},{"name":"نقره ای","id":"1002","prices":"3;700000-12;1000000"}]} of type java.lang.String cannot be converted to JSONObject

CODE :

블록

+4

당신이 당신의 JSON 코드를 공유 할 수 있도록 우리가 문제를 분리에서 당신을 도와 드릴까요? :) –

+0

String json의 가치는 무엇입니까? –

+0

@SunilMishra. 웹 서비스에서로드 된 JSON을 포함합니다. null 문자열이 아닌지 확인하십시오. 그것은 위에서 언급 한 JSON을 포함합니다. – Areff

답변

4

이유 :

일부 문자가 'MacRoman도 "문자 인코딩을 사용하여 매핑 할 수 없습니다. 인코딩을 변경하거나 "MacRoman"문자 인코딩에서 지원하지 않는 문자를 제거하십시오.

편집

String jsonString = " {\"teriffs\": [{\"name\":\"برنز\",\"id\":\"1000\",\"prices\":\"3;400000-12;600000\"},{\"name\":\"برنز\",\"id\":\"1000\",\"prices\":\"3;400000-12;600000\"},{\"name\":\"نقره ای\",\"id\":\"1002\",\"prices\":\"3;700000-12;1000000\"},{\"name\":\"نقره ای\",\"id\":\"1002\",\"prices\":\"3;700000-12;1000000\"}]}"; 

     try { 

      String UTF8String = new String(jsonString.getBytes("UTF-8")); 

      JSONObject object = new JSONObject(UTF8String); 
      JSONArray array = object.getJSONArray("teriffs"); 
      for(int i=0;i<array.length();i++){ 

       JSONObject jsonObject = array.getJSONObject(i); 
       Log.d("ID", jsonObject.getString("id")); 
       Log.d("NAME", jsonObject.getString("name")); 
       Log.d("PRICES", jsonObject.getString("prices")); 

      } 


     } catch (JSONException e2) { 
      // TODO Auto-generated catch block 
      e2.printStackTrace(); 
     } catch (UnsupportedEncodingException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
+0

좀 더 구체적으로 알려주시겠습니까? – Areff

+0

내 편집 된 답변보기 –

+1

Json 문자열을 UTF-8 인코딩 문자열로 변환하십시오. –