Java 从GSON解析JSON中的泛型标记
我有一个包含泛型值的JSON。我用地图试过了,但没有结果。我的问题是通用标记从第二级开始。下面是我试图通过gson解析的JSONJava 从GSON解析JSON中的泛型标记,java,android,json,parsing,gson,Java,Android,Json,Parsing,Gson,我有一个包含泛型值的JSON。我用地图试过了,但没有结果。我的问题是通用标记从第二级开始。下面是我试图通过gson解析的JSON { "success": true, "status": 200, "events": { "Sep 2013": [ { "artist_id": 1, "created_at": "2013-05-18T15:21:00Z", "duration": 2,
{
"success": true,
"status": 200,
"events": {
"Sep 2013": [
{
"artist_id": 1,
"created_at": "2013-05-18T15:21:00Z",
"duration": 2,
"end_time": "2013-09-19T22:00:00Z",
"event_desc": "",
"event_facebook_link": "",
"event_link": "https://www.smtickets.com/marketing/view/1316",
"feature_small": false,
"featured_status": false,
"id": 90,
在这个JSON标记中,“事件”之后是通用的,即“2013年9月”
我现在正在尝试的是:
public Event event ;
public class Event {
public ArrayList<Map<String, String>> dates;
}
谁能告诉我,我怎样才能把日期分类。所以Gson可以序列化它。或者有没有其他方法来迭代第一级标记,然后我可以这样声明它
Type fooType = new TypeToken<Foo<Bar>>() {}.getType();
Type fooType=new-TypeToken(){}.getType();
toJson(foo,fooType) 您确实可以使用
地图
,但您没有正确使用它。请注意,您拥有的是一个字段“events”
,它是一个包含多对字符串
和数组
对象的对象:
{ "events": { "Sep 2013": [ {}, {}, ... ], ... } }
要解析JSON,您需要这样的类结构(在伪代码中):
最后,如果您想要访问日期,那么您可以将所有日期都输入:
Set<String> dates = obj.getEvents().keySet(); //"Sep 2013", ...
Set dates=obj.getEvents().keySet()//“2013年9月”。。。
注意:事实上,如果你只想要那些日期,你甚至不需要类
事件
,而且你可以使用映射事件
…,据我所知,使用通用的fiels,你就完蛋了,不能再自动将JSON映射到某个对象。您必须自己使用gson、sax-style解析JSON。认真地说:(…一定有办法做到这一点。事实上,根据我们可以做到,但这是针对第一级标记的。@Hasandroid,只需向类事件添加更多属性,名称与JSON响应中的字段名称匹配,即字符串结束时间,字符串事件描述,等等。。。(只使用String
、int
和boolean
)更容易。使用event-event=obj.getEvents().get(i);
,只需获取事件对象,就可以访问event
中的所有字段。。。
class AllShowsActivityData
Map<String, List<Event>> events
class Event
int artist_id
String created_at //parsing as String to simplify...
int duration
...
AllShowsActivityData obj = gson.fromJson(reader, AllShowsActivityData.class);
Set<String> dates = obj.getEvents().keySet(); //"Sep 2013", ...