Saltar al contenido

Uso de archivos JSON en recursos de aplicaciones de Android

Buscamos en diferentes espacios para así mostrarte la respuesta para tu inquietud, si tienes alguna duda puedes dejarnos un comentario y respondemos porque estamos para servirte.

Solución:

Consulte openRawResource. Algo como esto debería funcionar:

InputStream is = getResources().openRawResource(R.raw.json_file);
Writer writer = new StringWriter();
char[] buffer = new char[1024];
try 
    Reader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
    int n;
    while ((n = reader.read(buffer)) != -1) 
        writer.write(buffer, 0, n);
    
 finally 
    is.close();


String jsonString = writer.toString();

Kotlin ahora es el idioma oficial de Android, así que creo que esto sería útil para alguien.

val text = resources.openRawResource(R.raw.your_text_file)
                                 .bufferedReader().use  it.readText() 

Usé la respuesta de @ kabuko para crear un objeto que se carga desde un archivo JSON, usando Gson, desde los Recursos:

package com.jingit.mobile.testsupport;

import java.io.*;

import android.content.res.Resources;
import android.util.Log;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;


/**
 * An object for reading from a JSON resource file and constructing an object from that resource file using Gson.
 */
public class JSONResourceReader 

    // === [ Private Data Members ] ============================================

    // Our JSON, in string form.
    private String jsonString;
    private static final String LOGTAG = JSONResourceReader.class.getSimpleName();

    // === [ Public API ] ======================================================

    /**
     * Read from a resources file and create a @link JSONResourceReader object that will allow the creation of other
     * objects from this resource.
     *
     * @param resources An application @link Resources object.
     * @param id The id for the resource to load, typically held in the raw/ folder.
     */
    public JSONResourceReader(Resources resources, int id) 
        InputStream resourceReader = resources.openRawResource(id);
        Writer writer = new StringWriter();
        try 
            BufferedReader reader = new BufferedReader(new InputStreamReader(resourceReader, "UTF-8"));
            String line = reader.readLine();
            while (line != null) 
                writer.write(line);
                line = reader.readLine();
            
         catch (Exception e) 
            Log.e(LOGTAG, "Unhandled exception while using JSONResourceReader", e);
         finally 
            try 
                resourceReader.close();
             catch (Exception e) 
                Log.e(LOGTAG, "Unhandled exception while using JSONResourceReader", e);
            
        

        jsonString = writer.toString();
    

    /**
     * Build an object from the specified JSON resource using Gson.
     *
     * @param type The type of the object to build.
     *
     * @return An object of type T, with member fields populated using Gson.
     */
    public  T constructUsingGson(Class type) 
        Gson gson = new GsonBuilder().create();
        return gson.fromJson(jsonString, type);
    

Para usarlo, haría algo como lo siguiente (el ejemplo está en un InstrumentationTestCase):

   @Override
    public void setUp() 
        // Load our JSON file.
        JSONResourceReader reader = new JSONResourceReader(getInstrumentation().getContext().getResources(), R.raw.jsonfile);
        MyJsonObject jsonObj = reader.constructUsingGson(MyJsonObject.class);
   

Aquí tienes las comentarios y calificaciones

Más adelante puedes encontrar las acotaciones de otros desarrolladores, tú de igual forma tienes el poder dejar el tuyo si lo deseas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *