2014-10-09 2 views
-3

Вот мой JSON:Получить JSONObject - Android

{ 
    "id": "11111", 
    "title": "title?", 
    "url": "www.example.com", 
    "fulltext": { 
    "page1": "<p>balblabba</p>", 
    "page2": "<p>avavaava</p>" 
    }, 
    "related_articles": [ 
    { 
     "id": "123", 
     "title": "title", 
     "image_name": "www.example.com/image1.png" 
    } 
    ] 
} 

мне нужно положить все в строках. Я использую этот код:

String data = JSON TEXT!!!; 
JSONObject jRealObject = new JSONObject(data); 

String title = jRealObject.getString("title").toString(); 
String url = jRealObject.getString("url").toString(); 
String fulltext = jRealObject.getString("fulltext").toString(); 

String page1 = ???? 
String page2 = ???? 

jArray = jRealObject.getJSONArray("related_articles"); 
for (int i = 0; i < jArray.length(); i++) { 
    jRealObject = jArray.getJSONObject(i); 

    String relatedId = jRealObject.getString("id").toString(); 
    String relatedTitle = jRealObject.getString("title").toString(); 
    String relatedImage = jRealObject.getString("image_name").toString(); 
} 

Я получаю все, но я хочу разделить «fultext» на две переменные. но я не знаю, как я могу получить «page1» и «page2».

+1

полнотекстового является JSONObject ... не используйте GetString на этом узле ... и какова точка 'jRealObject.getString ("ххх"). ToString()' jRealObject.getString ("ххх ") является строкой – Selvin

+1

' jRealObject.optJSONObject ("fulltext") ' – Blackbelt

ответ

3

Здесь в вашем ответе «полный текст» - это другой Jsonobject, использующий ниже код для получения других данных.

JSONObject fulltextobj = jRealObject.getJSONObject("fulltext"); 

    String page1 = fulltextobj.getString("page1"); 
    String page2 = fulltextobj.getString("page2"); 
+1

У вас уже есть строка. Почему вы используете '.toString()'? –

+0

toString() для строки бессмысленно – maszter

1
JSONObject obj = jRealObject.getJSONObject("fulltext");  
String var1 = obj.getString("page1");  
String var2 = obj.getString("page2"); 

EDIT: У вас есть JSONObject, вложенный в другой объект JSONObject. fulltext - это не String, это действительно JSONObject, поэтому вам нужно получить JSONObject от родителя

+0

Я исправил ее. Я понимаю, когда я отправляю ответ ... извините –

+0

Еще один вопрос: иногда полный текст имеет только одну страницу, несколько раз больше, чем 2. Как я могу проверить это? – KiKo

+0

Пожалуйста, @Kiko, отметьте его как правильно, если он действительно ... спасибо! –

1

Попробуйте этот путь, надеюсь, это поможет вам решить вашу проблему.

try{ 
    JSONObject jsonObject = new JSONObject("{\"id\":\"11111\",\"title\":\"title?\",\"url\":\"www.example.com\",\"fulltext\":{\"page1\":\"<p>balblabba</p>\",\"page2\":\"<p>avavaava</p>\"},\"related_articles\":[{\"id\":\"123\",\"title\":\"title\",\"image_name\":\"www.example.com/image1.png\"}]}"); 
    HashMap<String,Object> responseMap = new HashMap<String, Object>(); 
    ArrayList<HashMap<String,String>> articleList = new ArrayList<HashMap<String, String>>(); 

    responseMap.put("id",jsonObject.getString("id")); 
    responseMap.put("title",jsonObject.getString("title")); 
    responseMap.put("url",jsonObject.getString("url")); 
    JSONObject fullTextJsonObject = jsonObject.getJSONObject("fulltext"); 
    responseMap.put("page1",fullTextJsonObject.getString("page1")); 
    responseMap.put("page2",fullTextJsonObject.getString("page2")); 

    JSONArray relatedArticleJsonArray = jsonObject.getJSONArray("related_articles"); 
    for(int i=0;i<relatedArticleJsonArray.length();i++){ 
     HashMap<String,String> articleRow = new HashMap<String, String>(); 
     articleRow.put("id", relatedArticleJsonArray.getJSONObject(i).getString("id")); 
     articleRow.put("title", relatedArticleJsonArray.getJSONObject(i).getString("title")); 
     articleRow.put("image_name", relatedArticleJsonArray.getJSONObject(i).getString("image_name")); 
     articleList.add(articleRow); 
    } 
    responseMap.put("related_articles",articleList); 

    System.out.print("id : "+responseMap.get("id").toString()); 
    System.out.print("title : "+responseMap.get("title").toString()); 
    System.out.print("url : "+responseMap.get("url").toString()); 
    System.out.print("page1 : "+responseMap.get("page1").toString()); 
    System.out.print("page2 : "+responseMap.get("page2").toString()); 
    ArrayList<HashMap<String,String>> list = (ArrayList<HashMap<String,String>>)responseMap.get("related_articles"); 
    for (HashMap<String,String> row : list){ 
     System.out.print("id : "+row.get("id")); 
     System.out.print("title : "+row.get("title")); 
     System.out.print("image_name : "+row.get("image_name")); 
    } 
}catch (Throwable e){ 
    e.printStackTrace(); 
} 
1

Вы делаете строку снова toString, которые не имеющую никакого смысла. сделайте некоторые изменения в своем коде. Я также сделал изменения, которые вы requrie.

String data = JSON TEXT!!!; 
    JSONObject jRealObject = new JSONObject(data); 

    String title = jRealObject.getString("title"); 
    String url = jRealObject.getString("url"); 
    String fulltext = jRealObject.getString("fulltext"); 

    JSONObject obj = jRealObject.getJSONObject("fulltext"); 

    String strPage1 = obj.getString("page1"); 
    String strPage2 = obj.getString("page2"); 

jArray = jRealObject.getJSONArray("related_articles"); 
for (int i = 0; i < jArray.length(); i++) { 
    jRealObject = jArray.getJSONObject(i); 

    String relatedId = jRealObject.getString("id"); 
    String relatedTitle = jRealObject.getString("title"); 
    String relatedImage = jRealObject.getString("image_name"); 
} 
Смежные вопросы