2012-04-24 3 views
-1

Я получаю много путаницы в этом. что мне нужно сделать, разобрать ответ JSONP, поступающий с сервера, и отобразить его. Возможно ли разобрать ответ JSONP на Android?Как разобрать ответ JSONP (JSON с заполнением)?

Вот мой ответ выглядит следующим образом:

{ 
    "Reference1":"String content", 
    "Reference2":"String content", 
    "Reference3":"String content", 
    "Reference4":"String content" 

} 

Спасибо

+4

Это JSON, а не JSONP. – Quentin

+0

@Quentin, но отображается. Эта операция поддерживает ответы JSONP. Функция обратного вызова может быть задана с помощью параметра запроса обратного вызова Url. на странице справки. – wolverine

+0

- Поскольку вы не пишете JS, который работает в браузере, вам не нужен JSONP, поэтому возможность службы необязательно предоставить его не имеет значения. – Quentin

ответ

0

То, что я делал во многих проектах, является первым преобразовать строку чтения из потока HTTP в JSONObject используя код ниже:

JSONObject jsonOBJ=new JSONObject(jsonString); 

Затем использовать jsonobject.getString("tag") прочитать каждый тег. Для вашего кода, было бы что-то вроде:

String reference1=jsonobject.getString("Reference1"); 

Теперь значение referece1 = String content

А вот мой HTTP получить код:

String url="Your URL Goes Here"; 
DefaultHttpClient httpclient = new DefaultHttpClient(); 
HttpGet httpget = new HttpGet(url); 
HttpResponse response; 
try { 
    try 
    { 
     InetAddress i = InetAddress.getByName(url); 
    } catch (UnknownHostException e1) { 
     e1.printStackTrace(); 
    } 
    response = httpclient.execute(httpget); 
    HttpEntity entity = response.getEntity(); 
    if (entity != null) { 
     InputStream instream = entity.getContent(); 
     String result= convertStreamToString(instream); 
     stringContent=new StringContent(result); 
     instream.close(); 
    } 
} catch (ClientProtocolException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

И ниже является convertStreamToString блок

private static String convertStreamToString(InputStream is) 
{ 
    /* 
    * To convert the InputStream to String we use the BufferedReader.readLine() 
    * method. We iterate until the BufferedReader return null which means 
    * there's no more data to read. Each line will appended to a StringBuilder 
    * and returned as String. 
    */ 
     BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
     StringBuilder sb = new StringBuilder(); 

     String line = null; 
     try { 
      while ((line = reader.readLine()) != null) { 
       sb.append(line + "\n"); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      is.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    return sb.toString(); 
} 
+0

можно ли передать специальные символы в url? – wolverine

+0

Когда я отправляю URL-адрес в restclient, он отвечает, и ответ находится в формате json, но когда я просматриваю программу eclipse, он показывает нулевое значение. – wolverine

+0

Добавлен http get и прочее, дайте мне знать, если вы все еще есть какие-либо проблемы –

0

сама обивка никогда не является проблемой. Каждая приличная библиотека разбора JSON будет обрабатывать ее трансперенсионально. Я лично рекомендую вам использовать библиотеку GSON. Я использовал его во многих проектах и ​​никогда не нашел на что жаловаться.

PS: Возможно, я неправильно понимаю вас, но когда вы говорите синтаксический анализ, я предполагаю, что вам нужно получить значения для атрибутов и не нужно сохранять какие-либо дополнения, не так ли?

0

Я думаю, что это tutorial очень подробно разбора json в android.Hope это поможет вам.

+0

Ответы, которые содержат только ссылки в других местах, действительно «хорошие ответы»? ([Нет, они отсутствуют] (http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers)) – Quentin

Смежные вопросы