如何在列表中存储不同类型的JSON对象?

时间:2015-07-01 10:05:44

标签: java android json

我想使用RecyclerView在新闻Feed中显示不同类型的故事。例如,一个故事可以有一个天气如何变化的模板。所以JSON数据将包含日期,温度等。

我从数据库下载故事作为JSON并解析它们。目前,我将解析的JSON对象存储在List<FeedStoryContainer>中。 FeedStoryContainer有两个属性,int表示类型,Object包含数据。当需要绑定数据时,我将Object转换为基于int类型的正确故事类型。这种方法可以吗?

1 个答案:

答案 0 :(得分:1)

在我看来,你的故事类型应该具有相同的基础和api会更好。将它们保存在List&lt; StoryBase&gt;与api相同。根据类型(int)对对象进行转换是一种解决方案,但迟早它不会有所帮助。更好的是使用多态。

class Story
{
    void apply( Viewer viewer )
    {
      System.out.println( "Default implementation" )
    }
}

class News extends Story
{
  void apply( Viewer viewer )
  {
     viewer.setTextBody( this.title + " " + this.content );
  }
}

class Wheather extends Story
{
  void apply( Viewer viewer )
  {
     viewer.setTextBody( this.title + " " + this.temperature );
  }
}

code 

List< Story > list;

for( Story story : list )
{
  story.apply( this );
}