2013-09-25 121 views
1

我试图解析一些JSON三星gio(运行2.3.6)时,我有一个奇怪的例外,我试过它在xperia neo(运行4.0)它运作良好,也我试过不同的JSON,它在两个设备上都能正常工作,我验证了JSON并且它是有效的!我提供代码,json文件和logcat,非常感谢。Android JSON不解析三星gio

解析器

public static JSONObject getJSONObject(String url) throws ClientProtocolException, IOException, JSONException 
{ 
    DefaultHttpClient httpclient = new DefaultHttpClient(new BasicHttpParams()); 
    HttpPost httppost = new HttpPost(url); 
    httppost.setHeader("Content-type", "application/json"); 
    InputStream inputStream = null; 
    HttpResponse response; 
    response = httpclient.execute(httppost); 
    HttpEntity entity = response.getEntity(); 
    inputStream = entity.getContent(); 
    //buildJSONString(inputStream); 
    String s = buildJSONString(inputStream); 
    Log.v("", s); // note that s is printed along all json files and all devices 
    JSONObject jObj = new JSONObject(s); 
    Log.v("", jObj +""); // it doesnt print on samsung, prints on xperia 
    return jObj ; 
} 
private static String buildJSONString(InputStream inputStream) throws IOException 
    { 
     BufferedReader reader; 
     StringBuilder stringBuilder=null; 
     reader = new BufferedReader(new InputStreamReader(inputStream,"UTF-8"), 8); 
     stringBuilder = new StringBuilder(); 
     String line = null; 
     while ((line = reader.readLine()) != null) 
      stringBuilder.append(line + "\n"); 
     if (inputStream != null) 
      inputStream.close(); 
     return stringBuilder.toString(); 
    } 

工作JSON

{ 
    "song_list": [ 
     { 
      "id": "4", 
      "title_en": "Aces High", 
      "artist_en": "IRON MAIDEN", 
      "thumb_url": "http://192.168.0.81:8080/content/iron_maiden.jpg", 
      "media_url": "http://192.168.0.81:8080/content/iron_maiden.mp3", 
      "preview_url": "blabla", 
      "num_download": "2846", 
      "price": "0.50", 
      "rating" : "4" 
     }, 
     { 
      "id": "8", 
      "title_en": "Wasted Years", 
      "artist_en": "IRON MAIDEN", 
      "thumb_url": "http://192.168.0.81:8080/content/iron_maiden.jpg", 
      "media_url": "http://192.168.0.81:8080/content/iron_maiden.mp3", 
      "preview_url": "blabla", 
      "num_download": "1984", 
      "price": "0.50", 
      "rating" : "4" 
     } 
    ] 
} 

不工作的JSON

{ 
    "artist_list": [ 
     { 
      "id": "1", 
      "artist_en": "MOTORHEAD", 
      "artist_ar": "موتورهيد", 
      "thumb_url": "http://192.168.0.81:8080/content/motorhead.jpg", 
      "num_download": "2846" 
     }, 
     { 
      "id": "2", 
      "artist_en": "WHITESNAKE", 
      "artist_ar": "وايتسنيك", 
      "thumb_url": "http://192.168.0.81:8080/content/whitesnake.jpg", 
      "num_download": "1984" 
     } 
    ] 
} 

serverhit

@Override 
protected String doInBackground(String... arg0) 
{ 
    try 
    { jObject = JSONParser.getJSONObject(url); } 
    catch (Exception e) 
    { cancel(true); Log.v("", "failed"); } 
    return null; 
} 

logcat的

09-25 16:04:31.869: V/(10704): ?{ 
09-25 16:04:31.869: V/(10704):  "artist_list": [ 
09-25 16:04:31.869: V/(10704):   { 
09-25 16:04:31.869: V/(10704):    "id": "1", 
09-25 16:04:31.869: V/(10704):    "artist_en": "MOTORHEAD", 
09-25 16:04:31.869: V/(10704):    "artist_ar": "موتورهيد", 
09-25 16:04:31.869: V/(10704):    "thumb_url": "http://192.168.0.81:8080/content/motorhead.jpg", 
09-25 16:04:31.869: V/(10704):    "num_download": "2846" 
09-25 16:04:31.869: V/(10704):   }, 
09-25 16:04:31.869: V/(10704):   { 
09-25 16:04:31.869: V/(10704):    "id": "2", 
09-25 16:04:31.869: V/(10704):    "artist_en": "WHITESNAKE", 
09-25 16:04:31.869: V/(10704):    "artist_ar": "وايتسنيك", 
09-25 16:04:31.869: V/(10704):    "thumb_url": "http://192.168.0.81:8080/content/whitesnake.jpg", 
09-25 16:04:31.869: V/(10704):    "num_download": "1984" 
09-25 16:04:31.869: V/(10704):   } 
09-25 16:04:31.869: V/(10704):  ] 
09-25 16:04:31.869: V/(10704): } 
09-25 16:04:31.869: W/AsyncTask(10704): java.lang.InterruptedException 
09-25 16:04:31.869: W/AsyncTask(10704):  at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1272) 
09-25 16:04:31.869: W/AsyncTask(10704):  at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:220) 
09-25 16:04:31.869: W/AsyncTask(10704):  at java.util.concurrent.FutureTask.get(FutureTask.java:83) 
09-25 16:04:31.869: W/AsyncTask(10704):  at android.os.AsyncTask$3.done(AsyncTask.java:196) 
09-25 16:04:31.869: W/AsyncTask(10704):  at java.util.concurrent.FutureTask$Sync.innerCancel(FutureTask.java:294) 
09-25 16:04:31.869: W/AsyncTask(10704):  at java.util.concurrent.FutureTask.cancel(FutureTask.java:76) 
09-25 16:04:31.869: W/AsyncTask(10704):  at android.os.AsyncTask.cancel(AsyncTask.java:325) 
09-25 16:04:31.869: W/AsyncTask(10704):  at com.dwaik.jsonparser.ServerHit.doInBackground(ServerHit.java:36) 
09-25 16:04:31.869: W/AsyncTask(10704):  at com.dwaik.jsonparser.ServerHit.doInBackground(ServerHit.java:1) 
09-25 16:04:31.869: W/AsyncTask(10704):  at android.os.AsyncTask$2.call(AsyncTask.java:185) 
09-25 16:04:31.869: W/AsyncTask(10704):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306) 
09-25 16:04:31.869: W/AsyncTask(10704):  at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
09-25 16:04:31.869: W/AsyncTask(10704):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088) 
09-25 16:04:31.869: W/AsyncTask(10704):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581) 
09-25 16:04:31.869: W/AsyncTask(10704):  at java.lang.Thread.run(Thread.java:1019) 
+0

您是否尝试在加载时添加'UTF-8'? –

+0

上装什么?在哪里做? –

+0

我已经拥有它,虐待发布buildJSONString()implementationaion –

回答

0

试试这个

response = httpclient.execute(httppost); 
HttpEntity entity = response.getEntity(); 
String s = EntityUtils.toString(entity, HTTP.UTF_8); 

来自Android Java UTF-8 HttpClient Problem

你将不得不进口阿帕奇依赖。

+0

我试过了,现在它不适用于我的任何json文件 –

+0

Oups对不起,我遇到了一个似乎simil的问题对你的。我认为这是解决方案... ;-) – HoodVinci