1

Web サービスを呼び出してこの JSON を受信して​​いますが、JSONObject クラスをインスタンス化するとエラーがスローされます。この問題の原因とは思えないペルシャ文字 (UTF-8) が含まれていることがわかります。

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"}]
}

エラー:

org.json.JSONException: 値 {"teriffs": [{"name":"海賊版","id":"1000","prices":"3;400000-12;600000"},{"name": "価格","id":"1000","価格":"3;400000-12;600000"},{"名前":"年","id":"1002","価格":"タイプ java.lang.文字列を JSONObject に変換できません

コード :

   try {
         JSONStringer requestMsg = new JSONStringer().object().key("Ticket").value(TempUtil.UID).endObject();
         char[] c = CallServiceHelper.getCallService(requestMsg, "/WWWServices.svc/GetTeriffs");
          if(c!=null){
             JSONObject array = new JSONObject(new String(c));
              System.out.println(array.toString());
              return array;
                    } else {
                            return new JSONObject();
                    }
            } catch (Exception e) {
                    e.printStackTrace();
            }

ブロック

4

1 に答える 1

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();
        }
于 2013-07-29T05:31:29.793 に答える