如何使用没有名字的GSON?

时间:2013-09-03 07:02:00

标签: java php json

我正在使用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。

请帮忙,如果你能告诉我如何解决这个问题?

感谢。

2 个答案:

答案 0 :(得分:3)

public class MySQLEntry {
    public String bellname;
    public String date;
}
// ...
Gson gson = new Gson();
MySQLEntry[] entryArray = gson.fromJson(yourJsonString, MySQLEntry[].class);

答案 1 :(得分: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);

但是在对象中反序列化比在大多数情况下对字符串集合进行反序列化更好。