bugfix> java > 投稿

こちらがjsonです

{
    "test": {
        "val": "hello"
    }
}

ここに私が使用する関数があります

public static String loadJSONFromAsset(Context context) {
    String json = null;
    try {
        InputStream is = context.getAssets().open("convert.json");
        int size = is.available();
        byte[] buffer = new byte[size];
        is.read(buffer);
        JSONObject obj = new JSONObject();

        String value = obj.getJSONObject("test").optString("val");

        Log.e("test", "test: "+value);
        is.close();
        json = new String(buffer, "UTF-8");

    } catch (IOException ex) {
        ex.printStackTrace();
        Log.e("Nope", "Nope");
        return null;
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return json;
}

エラー

06-28 16:12:22.210 6876-6876/com.currencyconverter W/System.err: org.json.JSONException: No value for test

テストには価値がないということは、テストには価値がないことを知っていますが、なぜそれは val を取得しないのですか?値私はjsonをこのようにシンプルにすることさえ試みました

   {
        "val": "hello"
}

しかし、同じことは val に値がない