Нужно запарсить массив JSON-объектов

175
12 февраля 2019, 10:30

Есть массив JSON-объектов, которые я не могу запарсить, объектов 20 штук, у всех 3 одинаковых поля. Банально не могу найти методы парсинга массива json-объектов, кусок массива прилагается

Answer 1

Если у вас JSON хранится как строка то вот один из вариантов:

import org.json.JSONArray;
       try {
          JSONArray array = new JSONArray("[{a:1},{a:2}]");
            for(int i = 0; i < array.length(); i++) {
                int a = array.getJSONObject(i).getInt("a");
                System.out.println(a);
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
Answer 2

Если JSON хранится в папке ресурсов, например RAW или Assets, то я обычно делаю так.

1 Вам нужно сгенерить POJO для вашего массива. 2 Я себе сделал такой класс JsonReader

MyJSONReader {
public String readJsonDataFromFile(InputStream inputStream) throws IOException {
    StringBuilder builder = new StringBuilder();
    try {
        String jsonDataString = null;
        BufferedReader bufferedReader = new BufferedReader
                (new InputStreamReader(inputStream, "UTF-8"));
        while ((jsonDataString = bufferedReader.readLine()) != null) {
            builder.append(jsonDataString);
        }
    } finally {
        if (inputStream != null) {
            inputStream.close();
        }
    }
    return new String(builder);
}

}

в него я закидываю массив где нужно и раскидываю его в адаптер RecyclerView/ Выглядит это так:

private void createlListFromJson(){
    try {
        MyJSONReader myJsonReader = new MyJSONReader();
        InputStream inputStream = getResources().openRawResource(R.raw.myJsonFile);
        String jsonString = myJsonReader.readJsonDataFromFile(inputStream);
        JSONArray JsonArray = new JSONArray(jsonString);
        for (int i = 0; i < JsonArray.length(); ++i) {
            JSONObject ItemObject = JsonArray.getJSONObject(i);
            String title = ItemObject.getString("title");
            String author = ItemObject.getString("author ");
             ItemList itemList= new ItemList (title, author);
            List.add(itemList);
        }

    } catch (IOException | JSONException exception) {
        exception.printStackTrace();
    }
}

Во фрагмента:

  @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    createlListFromJson();
}

public View onCreateView.....
recyclerView.setHasFixedSize(true);
    Adapter mAdapter = new Adapter(List);
    recyclerView.setAdapter(mAdapter);
READ ALSO
Пустой результат при запросе с русскими символами в условии WHERE

Пустой результат при запросе с русскими символами в условии WHERE

Подключаюсь к базе MySQL из кода на Java через JDBCПри выполнении запроса:

203
Как сделать перезаписать строки в PostgreSql?

Как сделать перезаписать строки в PostgreSql?

есть запрос выполняемый через JDBC, например :

191
XML с параметрами (POST)

XML с параметрами (POST)

Можете пожалуйста пример какой подсказать для реализации post метода в контролере springПо условию контроллер, принимает на вход XML с параметрами

222