0

このようにPHPを介してサーバー上でJSONを作成しています(JSONを間違って作成している場合は、これを正しくする方法を教えてください)。次に、この文字列を Android の JSON オブジェクトに変換します。

{
 "account[0]":{"0":"http:\/\/twitter.com\/OGTedBerg"},
 "image[0]":{"0":"http:\/\/a0.twimg.com\/profile_images\/2821392281\/59f4fe1cbb44c8812401192a199b4b04_normal.jpeg"},
 "name[0]":"Ted Berg",
 "tweet[0]":"I know the flavor I most closely associate with the <em>United<\/em> <em>States<\/em> is Cheesy Paprika.  <a target=\"_blank\" href=\"http:\/\/t.co\/5On9CQuV\">http:\/\/t.co\/5On9CQuV<\/a>",
 "time[0]":"1 minute ago"
 }

 {
  "account[1]":{"0":"http:\/\/twitter.com\/sirgarrick45"},
  "image[1]":{"0":"http:\/\/a0.twimg.com\/profile_images\/3071585947\/207a70fcc09749a1359287a204db1c0b_normal.jpeg"},
  "name[1]":"Mike Green",
  "tweet[1]":"RT @<a class=\" \" href=\"https:\/\/twitter.com\/RussellVogt\">RussellVogt<\/a>: <a target=\"_blank\" href=\"http:\/\/search.twitter.com\/search?q=%23NDAA\" title=\"#NDAA\" class=\" \">#NDAA<\/a> <em>United<\/em> <em>States<\/em> of America Check it out!!   <a target=\"_blank\" href=\"http:\/\/t.co\/KxRx3fMH\">http:\/\/t.co\/KxRx3fMH<\/a>",
  "time[1]":"1 minute ago"
 }

 {
  "account[2]":{"0":"http:\/\/twitter.com\/Gabriel_Enrike"},
  "image[2]":{"0":"http:\/\/a0.twimg.com\/profile_images\/2921364087\/282fec08788f1d96eb0d1167a2639a69_normal.jpeg"},
  "name[2]":"GabrielEnrique",
  "tweet[2]":"@<a class=\" \" href=\"https:\/\/twitter.com\/BarackObama\">BarackObama<\/a> will oath to his second term as president from the <em>United<\/em> <em>States<\/em> on Martin Lutker King jr. day! <a target=\"_blank\" href=\"http:\/\/search.twitter.com\/search?q=%23HeHadADream\" title=\"#HeHadADream\" class=\" \">#HeHadADream<\/a> <a target=\"_blank\" href=\"http:\/\/search.twitter.com\/search?q=%23TeamBO\" title=\"#TeamBO\" class=\" \">#TeamBO<\/a> <a target=\"_blank\" href=\"http:\/\/search.twitter.com\/search?q=%23YesWeCan\" title=\"#YesWeCan\" class=\" \">#YesWeCan<\/a>",
  "time[2]":"1 minute ago"
 }

  {
   "account[3]":{"0":"http:\/\/twitter.com\/Davis_T94"},
   "image[3]":{"0":"http:\/\/a0.twimg.com\/profile_images\/2627985413\/image_normal.jpg"},
   "name[3]":"tim davis",
   "tweet[3]":"RT @<a class=\" \" href=\"https:\/\/twitter.com\/FactBoook\">FactBoook<\/a>: The <em>United<\/em> <em>States<\/em> once captured Mexico City.",
   "time[3]":"1 minute ago"
  }

これは、文字列を JSON オブジェクトに変換するために使用している Java コードです。

 private String[] acnt;
private String[] img;
private String[] nam;
private String[] twt;
private String[] tim;

 JSONObject obj = null;
        // creating response string to jsonobject and getting required values 
        try {
            obj = new JSONObject(twitter_response);

            int lenght = obj.length();
            acnt = new String[lenght];
            img = new String[lenght];
            nam = new String[lenght];
            twt = new String[lenght];
            tim = new String[lenght];
            //obj.getJSONArray(twitter_response);
            for ( $i = 0; $i < lenght; $i++ )
            {
                acnt[$i] = new String(obj.getString("account[" + $i + "]"));
                img[$i] = new String(obj.getString("image[" + $i + "]"));
                nam[$i] = new String(obj.getString("name[" + $i + "]"));
                twt[$i] = new String(obj.getString("tweet[" + $i + "]"));
                tim[$i] = new String(obj.getString("time[" + $i + "]"));
            }
        } catch (JSONException e) {
            Log.e("log_tag", "Error receiving tweet "+ e.toString());
            e.printStackTrace();
        }

これで、最初の値しか得られません。私が間違っていることを知っていますか?

4

1 に答える 1

0

入力は有効な JSON ではありません。JSON 配列は、使用して[ { element }, { element }, { element } ...]いるブラケット構文ではなく、 pattern を使用します。

JSON で配列をフォーマットする方法に関する関連する質問を次に示します。一般的な JSON 構文に関する正確なドキュメントを次に示します。

EDIT:あなたが投稿したJSONサンプルは有効にかなり近いと言えます(実際、個々のブロックはそれ自体で有効です。セット全体をそのまま解析しようとしている場合は有効ではありません)。そうは言っても、次のような従来の JSON 配列構造でデータをフォーマットする方が理にかなっている可能性があると私は主張します。

[
  {
    "account":{"0":"http:\/\/twitter.com\/OGTedBerg"},
    "image":{"0":"http:\/\/a0.twimg.com\/profile_images\/2821392281\/59f4fe1cbb44c8812401192a199b4b04_normal.jpeg"},
    "name":"Ted Berg",
    "tweet":"I know the flavor I most closely associate with the <em>United<\/em> <em>States<\/em> is Cheesy Paprika.  <a target=\"_blank\" href=\"http:\/\/t.co\/5On9CQuV\">http:\/\/t.co\/5On9CQuV<\/a>",
    "time":"1 minute ago"
  },
  ...
]

これにより、おそらく解析プロセスがかなり簡単になります。

于 2013-01-09T17:19:39.493 に答える