2011-10-19 35 views
0

解析されていません。JSON文字列は、私は、JSON文字列を解析したい

MyJsonString:

http://www.androidcompetencycenter.com/2009/10/json-parsing-in-android/

http://p-xr.com/android-tutorial-how-to-parse-read-json-data-into-a-android-listview/

:私は通過した

{ 
    "status": "ok", 
    "count": 2, 
    "count_total": 9, 
    "pages": 5, 
    "posts": [ 
    { 
     "id": 432, 
     "type": "post", 
     "title": "Title 1" 
    }, 
    { 
     "id": 434, 
     "type": "post", 
     "title": "Title 2" 
    } 
    ] 
} 

T彼の例は正常に動作しますが、そのためにJSON文字列を編集してJava Stringにしました。

例: JSON文字列:

{"menu": { 
    "id": "file", 
    "value": "File", 
    "popup": { 
    "menuitem": [ 
     {"value": "New", "onclick": "CreateNewDoc()"}, 
     {"value": "Open", "onclick": "OpenDoc()"}, 
     {"value": "Close", "onclick": "CloseDoc()"} 
      ] 
    } 
}} 

私が編集した:

String jsonStr = "{menu: {" + 
     "id: file," + 
     "value: File," + 
     "popup: {" + 
      "menuitem: [" + 
      "{value: New, onclick: CreateNewDoc()}," + 
      "{value: Open, onclick: OpenDoc()}," + 
      "{value: Close, onclick: CloseDoc()}" + 
      "]" + 
     "}" + 
     "}}"; 

しかし、私はそれに応じて、それが有効なJavaのStringであることを編集した後、このmyJsonStringを解析し、プロジェクトを実行しようとすると、それは私に警告を与え、私にタイトルを与えるトーストメッセージを表示しません。

Logcat:

10-19 18:36:45.972: WARN/System.err(1250): org.json.JSONException: Unterminated object at character 101 of { status : ok ,count : 2,count_total : 9,pages : 5,posts : [{id : 432,type : post ,title : Title 1 ,},{id : 434,type : post ,title : Title 2 ,},]} 

私は私が間違っているの場所がわからないのですか? Json Stringを有効なJava Stringにプログラム的にする方法はありません。

助けてください。

編集:

String jsonString="{\" status : ok \",\"count : 2\",\"count_total : 9\",\"pages : 5\",\"posts\" : [{\" id\" : \"432\",\"type\": \" post\", \"title\" : \" Title 1 \"},{ \"id \": \"434\",\type : post ,\"title\" : \" Title 2\"}]}"; 

JSONObject jsonObj = new JSONObject(jsonString); 

      String status_value = jsonObj.getString("status");   

      Toast.makeText(context,"Status_value= "+status_value, Toast.LENGTH_LONG).show(); 

私は、私はできません。このway.Butトーストステータス値を試してみました。助けてください。

+1

私はあなたがJSON文字列を編集した理由は、編集されたバージョンは、私に書式設定の有効なJSONのようには見えません理解していませんだから、おそらくあなたはエラーを起こしているのです。 –

+0

しかし、例では、それは働いていました。私はJSONの初心者ですので、私は例で始まったので、うまくいけばJSON文字列を編集しようとしました.JSON文字列を編集しないでください。 ? – Hiral

+0

なぜJSON文字列を編集していますか?そのまま使用してください。 JSONオブジェクトとJSON配列を使用して値を取得します。 – user370305

答えて

3

あなたのケースでは、JSONの応答は有効ではありません。 UPDATED

"count": 2, which is not the correct way it should be in double quotes like this 

"count": "2", same way for the rest of the response String also. 

:あなたが作成した

あなたの正確なJSONStringが間違っているが、ちょうど私の文字列とチェックアウトを交換してください。

最初の文字列

String jsonString = "{\"status\": \"ok\",\"count\": \"2\",\"count_total\": \"9\",\"pages\": \"5\",\"posts\":" + 
     "[{\"id\": \"432\",\"type\": \"post\",\"title\": \"Title 1\"}," + 
     "{\"id\": \"434\",\"type\": \"post\",\"title\": \"Title 2\"}]}"; 

2番目の文字列

String jsonStr = "{\"menu\": {\"id\": \"file\",\"value\": \"File\",\"popup\": {\"menuitem\": " + 
      "[{\"value\": \"New\", \"onclick\": \"CreateNewDoc()\"},{\"value\": \"Open\", \"onclick\": \"OpenDoc()\"}," + 
      "{\"value\": \"Close\", \"onclick\": \"CloseDoc()\"}]}}}"; 
+0

私はそのようにしてくれてありがとうthe response.if、それはどのように有効なJavaの文字列ですか?私はそれを "数える"ことを意味する: "2"、私に ":"でエラーを与える。 – Hiral

+0

編集した回答を確認してください。 –

+0

ありがとうございました。本当に有効なJson文字列を作ってくれました。しかし、まだ、私はトーストで適切な反応を得ていません。 – Hiral

3

Javaコードの文字列が有効なJSON文字列ではありません。文字列を引用符で囲まないでください。これを試してください:

String example = "[\"a\", \"b\", \"c\"]"; 

これは文字列配列を与えるはずです。