Incluir archivo .json local en el proyecto Eclipse Android
Tengo un archivo .json local. No quiero que esté en un servidor, solo quiero que se incluya en mi aplicación. Traté de pegarlo directamente en Eclipse en mi proyecto, pero tengo una FileNotFoundException, también intenté pegarlo en la carpeta de espacio de trabajo en el Explorador de Windows / Finder y obtuve la misma excepción. ¿Dónde debo ponerlo?
¡Gracias!
- Jackson que analiza JSON que contiene una matriz de objetos y un conjunto de mapas con teclas dinámicas
- No se puede analizar la matriz Json con Gson
- Beneficios de GSON sobre el análisis normal de JSON
- Android JNI - devuelve el rendimiento de la cadena json
- Cómo enviar el objeto json al servidor usando volley en andorid
- Protobuf streaming (serialización perezosa) API
- HttpGet con el cuerpo de la solicitud Android
- XML vs JSON. ¿Cuál es mejor para almacenar un pequeño fragmento de datos?
- UnitTest JSONObject muestra null
- Cómo ignorar un elemento JSON en Android Retrofit
- Lazy descargar imágenes en gridView
- Json no funciona con HttpPost probablemente alrededor de setEntity
- guardar una cadena en la memoria interna y luego mostrarla
Debe poner el archivo en el directorio /assets
o /res/raw
de su proyecto de Android. A partir de ahí, se puede recuperar con: Context.getResources().openRawResource(R.raw.filename)
o Context.getResources().getAssets().open("filename")
.
Poner el archivo json en la carpeta de activos, he utilizado este método como este
public static String jsonToStringFromAssetFolder(String fileName,Context context) throws IOException { AssetManager manager = context.getAssets(); InputStream file = manager.open(fileName); byte[] data = new byte[file.available()]; file.read(data); file.close(); return new String(data); }
Mientras analizamos podemos usar el método como:
String jsondata= jsonToStringFromAssetFolder(your_filename, your_context); jsonFileToJavaObjectsParsing(jsondata); // json data to java objects implementation
Más información: Blog de Prativa
Coloque el archivo en la carpeta de activos. Puede utilizar AssetManager open (String fileName) para leer el archivo.
Bajo / activos en su carpeta de proyecto. Si no tienes uno, hazlo.
Copiar activo en almacenamiento local
Tenía una necesidad muy similar. Tenía un archivo de plantilla de etiqueta que necesitaba para proporcionar una configuración de impresora Bluetooth por lo que lo incluyó en mi directorio de activos y lo copió en el almacenamiento interno para su uso posterior:
private static final String LABEL_TEMPLATE_FILE_NAME = "RJ_4030_4x3_labels.bin"; InputStream inputStreamOfLabelTemplate = getAssets().open( LABEL_TEMPLATE_ASSET_PATH ); labelTemplateFile = new File( getFilesDir() + LABEL_TEMPLATE_FILE_NAME ); copyInputStreamToFile( inputStreamOfLabelTemplate, labelTemplateFile ); printer.setCustomPaper( labelTemplateFile.getAbsolutePath() );
copyInputStreamToFile Función
// Copy an InputStream to a File. // private void copyInputStreamToFile(InputStream in, File file) { try { OutputStream out = new FileOutputStream(file); byte[] buf = new byte[1024]; int len; while((len=in.read(buf))>0){ out.write(buf,0,len); } out.close(); in.close(); } catch (Exception e) { e.printStackTrace(); } }
- ¿Por qué Android 4.0 / Ice Cream Sandwich asigna tanta memoria heap?
- Android :: Establecer la longitud máxima de EditText mediante programación con otro InputFilter