从资产中读取JSON文件

时间:2015-05-14 07:48:14

标签: java android json

我正在尝试使用getAssets()从片段中的资源读取JSON文件,但IDE说“无法解析此方法(getAssets())”。

代码

 public String loadJSONFromAsset() {
    String json = null;
    try {
        InputStream is = getAssets().open("moods.json");
        int size = is.available();
        byte[] buffer = new byte[size];
        is.read(buffer);
        is.close();
        json = new String(buffer, "UTF-8");
    } catch (IOException ex) {
        ex.printStackTrace();
        return null;
    }
    return json;

}

2 个答案:

答案 0 :(得分:1)

试试这个:

创建一个类 LoaderHelper.java

public class LoaderHelper {
    public static String getJson(Context context, String json){
        String jsonString=parseFileToString(context, json);
        return jsonString;
    }
    public static String parseFileToString( Context context, String filename )
    {
        try
        {
            InputStream stream = context.getAssets().open( filename );
            int size = stream.available();

            byte[] bytes = new byte[size];
            stream.read(bytes);
            stream.close();

            return new String( bytes );

        } catch ( IOException e ) {
            Log.i("GuiFormData", "IOException: " + e.getMessage() );
        }
        return null;
    }
}

要获取 json字符串,请将上述类称为:

String str=LoaderHelper.parseFileToString(context, "levels.json");

其中 levels.json 是存储在asset文件夹中的json文件。

答案 1 :(得分:0)

方法getAssets()是Context类的一部分。因此,如果您未在扩展Context的类中调用loadJSONFromAsset(),例如在Activity中,您需要提供Context作为方法参数的引用,然后在其上调用getAssets()