1

GSON を使用して、PHP サイトから取得した JSON を次のレイアウトで復号化しています。

[{"bellname":"Hey!","date":"2013-09-11"},{"bellname":"Haaaaey!","date":"2013-09-01"}]

これを HashMap に入れたいのですが、これを行うにはクラスを作成する必要があることがわかりました。それは私が理解していない部分です。これは私がこれまでに持っているものです:

public class MySQLDB {
    private BellName bellName;
    private BellDate bellDate;

    public static class BellName {
        private String bn;
    }

    public static class BellDate {
        private String date;
    }
}

ここからどこへ行く?私の PHP コードを表示する必要がある場合は、次のとおりです。

<?php

mysql_connect("localhost", "*******", "******");
mysql_select_db("tests");

$q1 = mysql_query("SELECT `bellname`, `date` FROM `bells`");

if($q1) {
    $que1 = array();

    while($a1 = mysql_fetch_assoc($q1)) {
        $que1[] = $a1;
    }

    $json1 = json_encode($que1);

    echo $json1;
}

?>

この PHP コードが行うことは、"mysql_fetch_assoc" 応答を JSON に入れることだけです。

これを修正する方法を教えていただければ、助けてください。

ありがとう。

4

2 に答える 2

1

jpossi による回答が最も適切です。ただし、json オブジェクトは Java では Map として表すことができることを知っておいてください。また、json 配列は List として表すことができます。したがって、あなたの場合、これを行うこともできます:

Gson gson = new Gson();
    Type type = new TypeToken<List<Map<String,String>>>(){}.getType();
    List<Map<String, String>> value = gson.fromJson("[{\"bellname\":\"Hey!\",\"date\":\"2013-09-11\"},{\"bellname\":\"Haaaaey!\",\"date\":\"2013-09-01\"}]", type);
    System.out.println(value);

ただし、ほとんどの場合、オブジェクトでの逆シリアル化は、文字列のコレクションでの逆シリアル化よりも優れています。

于 2013-09-03T07:40:57.993 に答える