#java #android #arrays #json #nested
Вопрос:
Как я могу получить только строку «имя» каждого объекта в массиве «поля», индекс основного массива в 0, а затем следующий индекс с помощью цикла или с какой-то супер идеей
[
{
"name": "Bank1",
"fields": [
{
"name": "Email",
"slug": "email",
"type": "input"
},
{
"name": "City",
"slug": "city",
"type": "input"
},
{
"name": "Screenshot",
"slug": "screenshot",
"type": "file"
},
{
"name": "Full Name",
"slug": "full-name",
"type": "input"
}
],
"status": "Active"
},
{
"name": "Bank2",
"fields": [
{
"name": "Email",
"slug": "email",
"type": "input"
},
{
"name": "City",
"slug": "city",
"type": "input"
},
{
"name": "Screenshot",
"slug": "screenshot",
"type": "file"
},
{
"name": "Submitted Date",
"slug": "submitted-date",
"type": "calendar"
}
],
"status": "Active"
}
]
Вывод, который я хочу:
Email
Скриншот города
Полное Имя
Означает, что на выходе я получил индекс 0, данные первого массива объектов…
Что я еще не сделал
public void onResponse(String response) {
try {
JSONArray jsonArray = new JSONArray(response);
for (int i = 0; i < jsonArray.length(); i ) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
String p_name = jsonObject.getString("name");
ArrayList<String> arr = new ArrayList<>();
JSONArray ja = jsonObject.getJSONArray("fields");
int len = ja.length();
for (int j = 0; j < len; j ) {
JSONObject json = ja.getJSONObject(j);
arr.add(json.getString("name"));
}
}}catch block...
это дает мне все данные об именах индексов, которые мне нужны только для конкретных данных индекса
Мой Текущий Выход:
Скриншот города электронной почты
Полное Имя
Скриншот Города Электронной Почты
Дата отправки
Комментарии:
1. Используйте хэш-карту для хранения как индекса, так и его имени значения
2. как вы можете привести мне пример? @Пиюш
Ответ №1:
Если вы хотите получить конкретные данные индекса, вам следует передать условие if в цикл for.
ПРИМЕР: чтобы получить вывод индекса 0, например,
Электронная почта
Город
Скриншот
полное имя
Ваш код будет выглядеть так, как показано ниже.
public void onResponse(String response) {
try {
JSONArray jsonArray = new JSONArray(response);
for (int i = 0; i < jsonArray.length(); i ) {
if(i==0){
JSONObject jsonObject = jsonArray.getJSONObject(i);
String p_name = jsonObject.getString("name");
ArrayList<String> arr = new ArrayList<>();
JSONArray ja = jsonObject.getJSONArray("fields");
int len = ja.length();
for (int j = 0; j < len; j ) {
JSONObject json = ja.getJSONObject(j);
arr.add(json.getString("name"));
}
}
}}catch block...
Комментарии:
1. но там будет бесконечный индекс 0,1,2,3…. так что я могу для этого сделать?
2. но я думаю, вы сказали, что вам нужны только конкретные данные индекса. (Итак, я имею в виду, что ваша проблема в том, что когда вы добавляете в список, вам нужно определить конкретный индекс)
3. Итак, для этого вам, возможно, потребуется создать класс модели.
4. Нет, я хочу только конкретные данные по конкретному индексу у вас есть какое-либо решение, пожалуйста, помогите мне
5. вы хотите получить все данные, но, с другой стороны, вам нужны только конкретные данные индекса, когда вам это нужно, верно?
Ответ №2:
int i=gotIndex;//here you can give your exact index that you want
JSONObject jsonObject = jsonArray.getJSONObject(i);
String p_name = jsonObject.getString("name");
ArrayList<String> arr = new ArrayList<>();
JSONArray ja = jsonObject.getJSONArray("fields");
int len = ja.length();
for (int j = 0; j < len; j ) {
JSONObject json = ja.getJSONObject(j);
arr.add(json.getString("name"));
}
здесь вы использовали цикл вы можете использовать объект json вне цикла с использованием номера индекса i (JSONObject = JSONArray.getJSONObject(i))
Комментарии:
1. но мне нужны данные следующего массива, что означает индекс 1 после 0 данных, вот почему я использовал любое решение цикла? @Аджайкс
2. в чем ваша настоящая проблема?
3. см. Вопрос, мне нужны данные массива «поля» определенного индекса, под которым указана только строка имен объектов
4. смотрите, теперь вы поймете, что я обновил свой вопрос @AjayKS
5. Я думаю, что код верен, и ваш метод печати или что-то в этом роде неверен, логика, которую вы упомянули, верна. метод реализации неверен.