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

3
public class MySQLEntry {
    public String bellname;
    public String date;
}
// ...
Gson gson = new Gson();
MySQLEntry[] entryArray = gson.fromJson(yourJsonString, MySQLEntry[].class);
于 2013-09-03T07:30:43.420 回答
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 回答