2

AndroidでJSONを使用してPHPWebサービスを利用しようとしています

サーバーから応答データを取得しました

string(170) "["14","Samsung","1","15","Nokia","1","16","Sony Ericson","1","18","LG","1","19","Iphone","1","21","HTC","1","22","Motorola","1","23","Micromax","1","41","BlackBerry","1"]"

ListViewに表示するには、どのように解析すればよいですか。カスタムアダプタを作成してListViewにデータを表示する方法はよく知っていますが、この出力を解析できません。ヘルプを参照してください。

このチュートリアルに従って、PHPWebサービスにアクセスしました

http://www.codeproject.com/Articles/267023/Send-and-receive-json-between-android-and-php
参考資料を教えてください。どんな助けでも大歓迎です。
ありがとうございました...

Alosphp側で生成されたJSONArrayの適切な形式は何ですか??

4

3 に答える 3

4

まず第一に、それは有効なJson形式ではありません。Jsonにはaが必要であり、label対応するvalue例です。"label": "value"ですが、この文字列は次のように手動で解析できます

String yourString= "["14","Samsung","1","15","Nokia","1","16","Sony Ericson","1","18","LG","1","19","Iphone","1","21","HTC","1","22","Motorola","1","23","Micromax","1","41","BlackBerry","1"]";

yourString= yourString.subString(1, yourString.length()-1);

String[] arrayValue= yourString.split(",");

これで、arrayValue [0] = "14" arrayValue [1]="Samsung"などになります。

于 2012-04-23T13:23:30.457 に答える
3

'stupid-json'配列のように見えます。文字列のリストとして表示されるため、基本的に問題はありません。通常、いくつかのJSONクラスを使用することをお勧めしますが、この特別な簡単なケースでは、次の方法で十分です。

String jsonString = "["14","Samsung","1","15","Nokia","1","16","Sony Ericson","1","18","LG","1","19","Iphone","1","21","HTC","1","22","Motorola","1","23","Micromax","1","41","BlackBerry","1"]"
jsonString = jsonString.subString(1, substring.length() -1);
String[] singleValues = jsonString.split(",");

これはこれにつながるはずです

new String[]{"14","Samsung","1",....}

そして、カスタムListAdapter内でその文字列の配列を渡すことができます(ただし、デフォルトの配列でも問題ありません)

于 2012-04-23T13:27:10.303 に答える
1

これは有効ですが、奇妙なjson応答です。このjsonを解析すると、27個の値が得られます。14、samsung、1、15、nokia ...しかし、3つのアイテムごとに「14、samsung、1」「15、nokia、1」のようなオブジェクトのようです。そして、そのjsonはそれを反映していません。

このようなオンラインのjsonパーサーを使用すると、次のような結果が得られます。

http://jsonviewer.stack.hu/

そして、あなたはこのようにそのjsonを解析することができます:

List<String> list = new ArrayList<String>();
int counter = 0;
boolean first = true;
String json = "[\"14\",\"Samsung\",\"1\",\"15\",\"Nokia\",\"1\",\"16\",\"Sony Ericson\",\"1\",\"18\",\"LG\",\"1\",\"19\",\"Iphone\",\"1\",\"21\",\"HTC\",\"1\",\"22\",\"Motorola\",\"1\",\"23\",\"Micromax\",\"1\",\"41\",\"BlackBerry\",\"1\"]";
JSONArray getJSONArray;
try {
  getJSONArray = new JSONArray(json);

  for (int i = 0; i < getJSONArray.length(); i++) {

    Log.d("", getJSONArray.getString(i) + "-" + i % 1 + "-" + i % 2);

    if ((first == true && counter == 1) || (first == false && counter == 2)) {
      list.add(getJSONArray.getString(i));
      counter = 0;
      first = false;
    }
    else {
      counter += 1;
    }
  }
}
catch (JSONException e) {
  e.printStackTrace();
}

アレイをログに記録して、取得したものを確認します。

for (String item : list) {
  Log.d("list", item);
}

結果:

D/list    ( 1669): Samsung
D/list    ( 1669): Nokia
D/list    ( 1669): Sony Ericson
D/list    ( 1669): LG
D/list    ( 1669): Iphone
D/list    ( 1669): HTC
D/list    ( 1669): Motorola
D/list    ( 1669): Micromax
D/list    ( 1669): BlackBerry

そしてサーバーサイトの場合:

通常、そのjsonはこのようにする必要がありました。

[
    {
        id: "14",
        brand: "Samsung",
        status: "1"
    },
    {
        id: "15",
        brand: "Nokia",
        status: "1"
    },
    {
        id: "16",
        brand: "Sony Ericson",
        status: "1"
    }
]
于 2012-04-23T13:33:07.087 に答える