¿Cómo leer un archivo Json en android?

Tengo un textview y en él quiero mostrar el contenido del Json pero no quiero mostrar todo lo que contiene solo una parte y no sé como hacerlo

{
"opt": {
"output_dir": "",
"num_to_draw": 10,
"final_nms_thresh": 0.3,
"use_cudnn": 1,
"text_size": 2,
"max_images": 100,
"gpu": -1,
"splits_json": "info/densecap_splits.json",
"vg_img_root_dir": "",
"checkpoint": "data/models/de/de-pre-v16.t7",
"num_proposals": 1000,
"rpn_nms_thresh": 0.7,
"image_size": 720,
"input_image": "imgs/elephant.jpg",
"input_split": "",
"box_width": 2,
"input_dir": "",
"output_vis_dir": "vis/data",
"output_vis": 1
},
"results": [
{
  "img_name": "elephant.jpg",
  "scores": [
    8.1914930343628,
    6.138174533844,
    1.7157821655273,
  ],
  "captions": [
    "people riding an elephant",
    "two people riding an elephant",
    "trunk of the elephant",
    "dirt on the ground",
    "head of an elephant",
  ],
  "boxes": [
    [
      290.14199829102,
      41.953628540039,
      173.92370605469,
      204.49822998047
    ],
    [
      215.09968566895,
      2.0242004394531,
      413.89117431641,
      481.68103027344
    ],
    [
      503.19287109375,
      230.57830810547,
      72.259887695312,
      192.77172851562
    ]
  ]
}
]
}

Solo necesito presentar lo que hay dentro del caption y no entiendo si lo tengo que hacer como arreglo o como objeto

7
задан 18.11.2016, 01:45
6 ответов

ВїCГіmo читать файл Json в android?

Есть что-то важное, чтобы считать,

  • , инициализируется ли .json с { он считается объектом Json.

  • , Если .json инициализируется с [она считается Договоренностью Json.

В твоем вопросе у тебя есть файл.Json, что содержит объект (и внутри tambiГ©n arrays):

JSONObject jsonjObject = new JSONObject(RespuestaJson);

внутри твоего объекта ты можешь получать Вашу стоимость этой формы:

String valorLlave = jsonjObject.getString("<nombre llave>");

ты можешь tambiГ©n получать все элементы array, например array results:

"results": [
{
  "img_name": "elephant.jpg",
  "scores": [
    8.1914930343628,
    6.138174533844,
    1.7157821655273,
  ],
  "captions": [
    "people riding an elephant",
    "two people riding an elephant",
    "trunk of the elephant",
    "dirt on the ground",
    "head of an elephant",
  ],
  "boxes": [
    [
      290.14199829102,
      41.953628540039,
      173.92370605469,
      204.49822998047
    ],
    [
      215.09968566895,
      2.0242004394531,
      413.89117431641,
      481.68103027344
    ],
    [
      503.19287109375,
      230.57830810547,
      72.259887695312,
      192.77172851562
    ]
  ]

obtendrГ-an Ваши элементы этой формы, посредством объекта jsonjObject, которые ты получил:

JSONArray jsonArray = jsonjObject.getJSONArray("results");
for (int i = 0; i < jsonArray.length(); i++)
{
    try {
        JSONObject jsonObjectHijo = jsonArray.getJSONObject(i); 
    } catch (JSONException e) {
        Log.e("Parser JSON", e.toString());
    }
}
7
ответ дан 24.11.2019, 12:34
  • 1
    Уже tardó много времени ты " Издавая..." xD haha – x4mp73r 18.11.2016, 17:45
  • 2
    @x4mp73r спасибо друг, сейчас olvidé удалять это! пґѕгѓ» ⍘・ пґї haha! – Jorgesys♦ 18.11.2016, 18:02

Если JSON - один string, ты можешь делать следующее:

String myJsonString= "{ text: 'some dummy text', array: [] }";
myJsonjObject = new JSONObject(myJsonString);

И ты соглашаешься на Ваши свойства и объекты следующего способа:

String myJsonString = myJsonjObject.getString("text"); // obtendrás 'some dummy text'

, Чтобы соглашаться на array внутри myJsonjObject, ты делаешь это следующей формой:

JSONArray myJsonArray = myJsonjObject.getJSONArray("array");
for (int i=0; i < myJsonArray.length(); i++)
{
    try {
        JSONObject oneObject = myJsonArray.getJSONObject(i); // Aquí accederías de la misma forma que se muestra arriba ya que es otro objeto
    } catch (JSONException e) {
        Log.e(TAG, e.toString());
    }
}
2
ответ дан 24.11.2019, 12:34

Давайте предполагать, что JSON - переменная:

JSONObject fullObject = new JSONObject(tu_json);
JSONObject resultsObject = mainObject.getJSONObject("results");
String  imgName = uniObject.getJsonString("img_name");

Это извлекает объект results (объекта JSON) в переменной resultsObject и despuГ©s извлеки признак img_name из этого объекта (resultsObject) в переменной imgName, которая является цепью текста.

2
ответ дан 24.11.2019, 12:34
  • 1
    В действительности, если ты обращаешь внимание results, это array, не объект. – Francisco Romero 18.11.2016, 02:11
  • 2
    @Error404 и это ú nica ответ с 1 hehe аІ _аІ – Jorgesys♦ 18.11.2016, 02:56
  • 3
    @Elenasys It' s suspicious аІ _аІ – Francisco Romero 18.11.2016, 03:10

Ты можешь использовать книжный магазин Gson, где ты легко можешь обращать твой String (JSON) в класс и так мочь соглашаться на данные. например;

Gson gson = new Gson();
  jsonData[] ojsonData= gson.fromJson(sJsonData, jsonData[].class);

, Где jsonData, это класс, что ты создал ранее с теми же данными твоего json каждый с Вашим методом get и set, и sJsonData - твой Json (String) и чтобы соглашаться на каждый одинокий элемент с:

 ojsonData[0].getData();
2
ответ дан 24.11.2019, 12:34
JSONObject json = new JSONObject(jsonString);
JSONArray jArray = json.getJSONArray("list");

System.out.println("*****JARRAY*****" + jArray.length());

for(int i=0; i<jArray.length(); i++){
    JSONObject json_data = jArray.getJSONObject(i);

    Log.i("log_tag", "_id" + json_data.getInt("account") +
        ", mall_name" + json_data.getString("name") +
        ", location" + json_data.getString("number") +
        ", telephone" + json_data.getString("url") +
        ",----" + json_data.getString("balance") +
        ",----" + json_data.getString("credit") +
        ",----" + json_data.getString("displayName")
    );
}

проверяет https://stackoverflow.com / questions / 4244879/reading-a-json-array-in-android

1
ответ дан 24.11.2019, 12:34
  • 1
    Я думаю, что ты запутываешься, вопрос связан с Android. – x4mp73r 18.11.2016, 02:00
  • 2
    @x4mp73r верный я запутался языка – hubman 18.11.2016, 02:05

Я буду удалять твой JSON. В действительности то, что у тебя есть, является объектом, который включает весь JSON, который содержит объекты и arrays.

Чтобы обнаруживать, если то, что ты хочешь вернуть, является объектом или array, ты должен сосредотачиваться на ключах, которые это включают, если он использует квадратные квадратные скобки [] он сошлется на Array, и если он использует квадратные скобки {} он сошлется на объект.

Следовательно, поскольку ты хочешь вернуть только "captions", ты можешь наблюдать, что это array, так как Ваш контент определен квадратными квадратными скобками []. В свою очередь, "captions" будь внутри контента объекта, который содержался array "results" и в свою очередь этот внутри объекта, который включает весь JSON.

В случае, если ты будешь считать твой JSON String я буду переводить предыдущее коду:

String json = "aqui tu JSON";
JSONObject jObject = new JSONObject(json); //Obtenemos el JSON global
JSONArray jArray = jObject.getJSONArray("results"); //Obtenemos el array results
for (int i=0; i < jArray.length(); i++) //Miramos en todos los objetos del array de objetos results
{
    try {
        JSONObject objeto = jArray.getJSONObject(i); //Obtenemos cada uno de los objetos del array results
        JSONArray jArrayCaptions = objeto.getJSONArray("captions"); //Obtenemos el array captions dentro de cada uno de los objetos del array results

        for(int j = 0; j < jArrayCaptions; j++){
            jArrayCaptions.getString(i); //Obtenemos cada uno de los String del array captions
        }
    } catch (JSONException e) {
    }
}
1
ответ дан 24.11.2019, 12:34