2016-04-19 2 views
0

В моем приложении я получаю объект JSON в качествеКак извлечь данные из объекта JSON в андроиде

{ «secQueList»: { «1»: «Какая ваша любимая книга?», "2 »:« Кто был вашим героем в детстве? »,« 3 »:« Как зовут вашего питомца? »,« 4 »:« Каким был ваш первый автомобиль или велосипед? »,« 5 »:« Какой твой любимый цвет ? »,« 6 »:« Какая ваша любимая спортивная команда? »,« 7 »:« Как зовут вашу школу? »,« 8 »:« Что такое девичья фамилия вашей матери? »,« 9 »: «Какая ваша родина?», «10»: «Какой ваш любимый вид спорта?», «11»: «Какое ваше любимое место?», «Que1»: null, «ans1»: null, сообщение ": null," fieldErrors ": null}

Я не могу понять, как именно я должен разбирать этот объект. Я пробовал использовать приведенный ниже код, но поскольку это не JSONArray, он генерирует исключение.

String getParam(String code, String element){ 
try { 
     String base = this.getItembyID(code); 
     JSONObject product = new JSONObject(base); 
     JSONArray jarray = product.getJSONArray("item"); 
    String param = jarray.getJSONObject(0).getString("name"); 
return param; 
} catch (JSONException e) { 
    e.printStackTrace(); 
    return "error"; 
} 
} 
+0

Возможный дубликат [как получить данные из объекта Json?] (Http://stackoverflow.com/questions/15918861/how-to- get-data-from-json-object) –

+0

Попросите своего разработчика api изменить json. ключ должен быть исправлен, он должен быть не таким, как «1», «2» и т. д. сделать массив объектов вместо –

ответ

1

Попробуйте что-то вроде этого:

JSONObject jsonObject = new JSONObject(code); 
JSONObject jsonObject1 = jsonObject.getJSONObject("secQueList"); 
for (int i=0;i<jsonObject1.length();i++){ 
String msg = jsonObject1.getString(String.valueOf(i)); 
} 
1

Вы можете попробовать использовать Gson, чтобы разобрать его. Я использовал ниже код в моем приложении в случае: похож

ArrayList<String> myArrayList; 
Gson gson = new Gson(); 
Type type = new TypeToken<ArrayList<String>>(){}.getType(); 
myArrayList= gson.fromJson(code, type); 

Вы должны добавить gson к вашему build.grandle, чтобы он работал

compile 'com.google.code.gson:gson:2.2.+' 
2
String base = this.getItembyID(code); 
JSONObject product = new JSONObject(base); 
JSONOBject secQueListJson = product.getJSONObject("secQueList"); 

// Get all json keys "1", "2", "3" etc in secQueList, so that we can get values against each key. 
Set<Map.Entry<String, JsonElement>> entrySet = secQueListJson .entrySet(); 

Iterator iterator = entrySet.iterator(); 

for (int j = 0; j < entrySet.size(); j++) { 
    String key = null; //key = "1", "2", "3" etc 
    try { 
     Map.Entry entry = (Map.Entry) iterator.next(); 
     key = entry.getKey().toString(); 
     //key = "1", "2", "3" etc 
    } 
    catch (NoSuchElementException e) { 
     e.printStackTrace(); 
    } 
    if (!TextUtils.isEmpty (key)) { 

     Log.d ("JSON_KEY", key); 
     String value = secQueListJson.getString(key); 
     //for key = "1", value = "Which is your favorite book?" 
     //for key = "2", value = "Who was your childhood hero?" 
    } 
} 
+0

Некоторые объяснения, пожалуйста? Ответы, составленные из простого кода, могут ввести в заблуждение. – Gnqz

2

Я рекомендую вам использовать сайты для JSon formater которые показывают вам тип JSon элементов в http://json.parser.online.fr/ и вы можете использовать библиотеку Gson для разбора JSON с помощью Pojo класса

public class secQueList { 

    public String que1; 

    public int ans1; 

public String message; 

public String nextPage; 

public QuestionList secQueList; 

} 

public class QuestionList { 
    @SerializedName("1") 
    public String ques1; 

    @SerializedName("2") 
    public int ques2; 

@SerializedName("3") 
public String ques3; 

@SerializedName("4") 
public String ques4; 

@SerializedName("5") 
public String ques5; 

@SerializedName("6") 
public String ques6; 

@SerializedName("7") 
public int ques7; 

@SerializedName("8") 
public String ques8; 

@SerializedName("9") 
public String ques9; 

@SerializedName("10") 
public String ques10; 

@SerializedName("11") 
public String ques11; 

} 

или вы можете использовать синтаксический анализ с использованием встроенного в JSON объекта

String jsonBody = the string you want to parse 
    JSONObject quesJsonBody = new JSONObject(jsonBody); 
    JSONOBject quesJson = quesJsonBody.getJSONObject("secQueList"); 
    String quesJson1 = quesJson.getString("1"); 
    String quesJson2 = quesJson.getString("2"); 
    String quesJson3 = quesJson.getString("3"); 
    String quesJson4 = quesJson.getString("4"); 
    String quesJson5 = quesJson.getString("5"); 
    String quesJson6 = quesJson.getString("6"); 
    String quesJson7 = quesJson.getString("7"); 
    String quesJson8 = quesJson.getString("8"); 
    String quesJson9 = quesJson.getString("9"); 
    String quesJson10 = quesJson.getString("10"); 
    String quesJson11 = quesJson.getString("11"); 

    String que1 = quesJsonBody.getString("que1"); 
    String ans1 = quesJsonBody.getString("ans1"); 
    String message = quesJsonBody.getString("message"); 
    String fieldErrors = quesJsonBody.getString("fieldErrors"); 
Смежные вопросы