2016-05-18 68 views
-1

なぜ例外が発生しているのかわかりませんが、JSONファイルで何があってもAndroidはできないようですそれを解析する。org.json.JSONException:{...}の値がありません

{"name":"Test 1"} 

し、関連するJava:

public WritingTest readTestFromFile(Context context) { 
    BufferedReader bufferedReader; 
    StringBuilder stringBuilder = new StringBuilder(); 
    String json; 
    JSONObject object = new JSONObject(); 

    AssetManager assetManager = context.getAssets(); 

    try { 
     bufferedReader = new BufferedReader(new InputStreamReader(assetManager.open("WritingTest1.json"))); 
     while ((json = bufferedReader.readLine()) != null) { 
      stringBuilder.append(json); 
     } 
     bufferedReader.close(); 
     Log.v("Stringbuilder Output", stringBuilder.toString()); 
     String jsonString = stringBuilder.toString(); 
     object.getJSONObject(jsonString); 

    } catch (IOException e) { 
     e.printStackTrace(); 
     Log.e("IOException", "Something went wrong with opening the file."); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
     Log.e("JSONException", "Something went wrong with JSON reader"); 
    } finally { 
     return new WritingTest(object); 
    } 
} 

そして最後にエラーコード:確か

V/Stringbuilder Output: {"name":"Test 1"} 
W/System.err: org.json.JSONException: No value for {"name":"Test 1"} 
W/System.err:  at org.json.JSONObject.get(JSONObject.java:389) 
W/System.err:  at org.json.JSONObject.getJSONObject(JSONObject.java:609) 
W/System.err:  at com.holospring.prodigept.WritingSelectorFragment.readTestFromFile(WritingSelectorFragment.java:80) 
W/System.err:  at com.holospring.prodigept.WritingSelectorFragment.onActivityCreated(WritingSelectorFragment.java:44) 
W/System.err:  at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1983) 
W/System.err:  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1092) 
W/System.err:  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252) 
W/System.err:  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1234) 
W/System.err:  at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:2046) 
W/System.err:  at android.support.v4.app.FragmentController.dispatchActivityCreated(FragmentController.java:174) 
W/System.err:  at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:597) 
W/System.err:  at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1237) 
W/System.err:  at android.app.Activity.performStart(Activity.java:6253) 
W/System.err:  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379) 
W/System.err:  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
W/System.err:  at android.app.ActivityThread.-wrap11(ActivityThread.java) 
W/System.err:  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
W/System.err:  at android.os.Handler.dispatchMessage(Handler.java:102) 
W/System.err:  at android.os.Looper.loop(Looper.java:148) 
W/System.err:  at android.app.ActivityThread.main(ActivityThread.java:5417) 
W/System.err:  at java.lang.reflect.Method.invoke(Native Method) 
W/System.err:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
W/System.err:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

org.json.JSONException: No value for {"name":"Test 1"} 

ここでJSONファイル、非常にシンプルなものですJSONの経験があまりない私はJavaコード内に何かを想定しています。

+0

[アンドロイドでJSONの解析:Xエラーのない値]の可能性のある重複:(http://stackoverflow.com/questions/10947065/json-parsing-in-あなたは、以下の詳細な回答を見ることができますandroid-no-value-for-x-error) – CSchulz

+0

あなたは{{"name": "Test" 1}}という名前のプロパティにアクセスしようとします。 JSON Stringをコンストラクタに置く必要があります: 'new JSONObject(jsonString)'。その後、あなたはプロパティにアクセスすることができます – shilch

答えて

2

このリンクを確認してください: Decoding JSON in Java

ポイントはあなたがフィールドにアクセスする、その後、最初のJSONをパースする必要があるということです。代わりにJsonObject内のgetString()の)あなたはoptstringのを(使用することができます

JSONParser parser = new JSONParser(); 
JSONObject object = (JSONObject)parser.parse(jsonString); 
String name = object.getString("name"); 
+0

うん、私は今何が間違っていたか見ることができます。 object.getJSONObject(jsonString); は である必要があります。object = new JSONObject(jsonString); 私の一部で間違ったミス。これをあまりにも長く見ている。 –

0

:何をすることで、空のJSONObjectを作成し、名前で行う必要があり、このような{"name":"Test 1"}

何かをフィールドにアクセスしようということです。

org.json.JSONException: No value for

関連する問題