def data(self):
        """load and cache data in json format
        """

        if self.is_obsolete():
            data = self.get_data()
            for datum in data:
                if 'published_parsed' in datum:
                    datum['published_parsed'] = \
                        self.parse_time(datum['published_parsed'])

            try:
                dumped_data = json.dumps(data)
            except:
                self.update_cache(data)
            else:
                self.update_cache(dumped_data)
                return data

        try:
            return json.loads(self.cache_data)
        except:
            return self.cache_data

        return self.get_data()
load and cache data in json format