#java #android #json
#java #Android #json
Вопрос:
У меня есть этот код для разбора json на Java, но проблема в том, что мой json выглядит следующим образом
{"ime":"Alen","prezime":"Osmanagiu0107","test":[1,2,3,4,5],"test2":{"1":"test","2":"555","test":"888","om":"hasd"}}
И мой Java-код для синтаксического анализа выглядит следующим образом :
protected void onPostExecute(String result) {
pDialog.dismiss();
runOnUiThread(new Runnable() {
public void run() {
ListView listView =(ListView)findViewById(R.id.jsonList);
if ( true) {
try {
JSONArray mojNiz = response.getJSONArray("");
List<JSON> noviJSON = new ArrayList<>();
//Popuniti podacima
for (int i = 0; i < mojNiz.length(); i ) {
JSON jsonObj = new JSON();
JSONObject mojObj = mojNiz.getJSONObject(i);
jsonObj.setIme(mojObj.getString(KEY_NAME));
// jsonObj.setPrezime(mojObj.getString(KEY_DOB));
//jsonObj.setPrezime(mojObj.getString(KEY_DESIGNATION));
noviJSON.add(jsonObj);
}
adapter = new Adapter(noviJSON, getApplicationContext());
listView.setAdapter(adapter);
} catch (JSONException e) {
e.printStackTrace();
}
} else {
Toast.makeText(MainActivity.this,
"Problem u loadiranjuz podataka",
Toast.LENGTH_LONG).show();
}
Как я могу разобрать эту конкретную строку json???
Комментарии:
1. Это не самый эффективный способ разбора JSON. Создайте POJOS и используйте GSON, и пусть GSON сделает синтаксический анализ за вас. Взгляните на этот блог. mkyong.com/java /…
Ответ №1:
Сначала получите JSONObject, а затем массив внутри него
JSONObject jsonObject = new JSONObject(jsonString);
String objectIme = jsonObject.getString("ime");
String prezime = jsonObject.getString("prezime");
В приведенной выше строке будет получен весь объект, и из этого объекта вы можете получить другие объекты и массив test1 и test2, как показано ниже, затем вы можете выполнить цикл по этому массиву, как вы это делали
JSONArray jArray1 = new JSONArray(jsonObject.getJSONArray("test1"));
JSONArray jArray2 = new JSONArray(jsonObject.getJSONArray("test2"));
for (int i = 0; i < jArray1 .length(); i ) {
JSON jsonObj = new JSON();
JSONObject mojObj = jArray1.getJSONObject(i);
jsonObj.setIme(mojObj.getString(KEY_NAME));
}
Ответ №2:
Вы неправильно разбираете свой json. Ваш json начинается с JSONObject вместо JSONArray. Итак, в вашем случае вы должны начать так (при условии, что ваша результирующая переменная метода onPostExecute содержит строку json)
JSONObject mojNiz = new JSONObject(result);
Теперь из приведенного выше mojNiz
объекта вы можете получить свой массив json
Комментарии:
1. json не может быть URL.
Ответ №3:
String s = "{"ime":"Alen","prezime":"Osmanagi\u0107","test":[1,2,3,4,5],"test2":{"1":"test","2":"555","test":"888","om":"hasd"}}";
try {
JSONObject jsonObject = new JSONObject(s);
jsonObject.getString("ime");
jsonObject.getString("prezime");
JSONArray jsonArray = jsonObject.getJSONArray("test");
List<Integer> list = new ArrayList<>();
for (int i = 0; i < jsonArray.length(); i ) {
list.add((Integer) jsonArray.get(i));
}
JSONObject testObject = jsonObject.getJSONObject("test2");
testObject.getString("1");
testObject.getString("2");
} catch (JSONException e) {
e.printStackTrace();
}