Dart - конвертировать Webfeed в Json - PullRequest
0 голосов
/ 10 октября 2019

Я новичок в dart и flutter. Я учусь и пытаюсь сделать приложение, которое читает Atomic Feed с веб-сайта. Для этого я использую webfeed пакет.

Вот код, который у меня есть до сих пор -

Future<NewsModel> fetchLatestNews() async {
    final response = await client.get("https://www.example.com/blog-news-list/atom/");

    if(response.statusCode == 200){
      var atomFeed = new AtomFeed.parse(response.body);
      Map map = new Map();
      for (int i = 0; i < atomFeed.items.length; i++) {          
           map[i]["title"] = atomFeed.items[i].title;
           map[i]["link"] = atomFeed.items[i].id;
           map[i]["published"] = atomFeed.items[i].published;
           map[i]["summary"] = Helpers.removeAllHtmlTags(atomFeed.items[i].summary);
      }

      return NewsModel.fromJson(json.decode(map.toString())); 
    }else {
      throw Exception("Failed to load post.");
    }

  } 

А вот мой news_model.dart

class NewsModel{

  List<_Result> _results = [];

  NewsModel.fromJson(Map<String, dynamic> parsedJson) {
    List<_Result> temp = [];

  for (int i = 0; i < parsedJson.length; i++) {
      _Result result = _Result(parsedJson[i]);
      temp.add(result);
    }
    _results = temp;
  }

  List<_Result> get results => _results;
}

class _Result {
  String _title;
  String _link;
  String _published;
  String _summary;
  List<String> _categories = [];

  _Result(result) {

    _title = result['title'];
    _link = result['link'];
    _published = result['published'];
    _summary = result['summary'];

    for (int i = 0; i < result['category'].length; i++) {
      _categories.add(result['category'][i]);
    }
  }

  String get published => _published;
  String get title => _title;
  String get link => _link;
  String get summary => _summary;
  List<String> get categories => _categories;
}

Этот код не работал. Я знаю, что делаю это неправильно, но моя проблема будет решена, если ответ на любой из следующих вопросов -

  1. как я могу преобразовать AtomFeed в Json?
  2. Или изменитьв модели, которая может отражать подачу без преобразования ее в Json.

Любая помощь будет высоко оценена

1 Ответ

0 голосов
/ 10 октября 2019

При этом у вас уже есть объект, который может отражать подачу:

AtomFeed atomFeed = AtomFeed.parse(response.body);

AtomFeed

...