Last active 1729664489

Revision a80cccc4202715b1e958e4fc7ea235d0c4627097

gistfile1.txt Raw
1#include "MeeTooter.h"
2#include <QDebug>
3#include <qjson/serializer.h> // QJson 序列化器
4#include <qjson/parser.h> // QJson 解析器
5
6MeeTooter::MeeTooter(QObject *parent) : QObject(parent) {
7 networkManager = new QNetworkAccessManager(this);
8 connect(networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(onReplyFinished(QNetworkReply*)));
9}
10
11void MeeTooter::fetchPublicTimeline(const QString &url) {
12 QNetworkRequest request(QUrl(url + "/api/v1/timelines/public")); // 使用 Mastodon API 获取公共时间线
13 networkManager->get(request);
14}
15
16void MeeTooter::onReplyFinished(QNetworkReply *reply) {
17 if (reply->error() == QNetworkReply::NoError) {
18 QByteArray responseData = reply->readAll();
19
20 // 使用 QJson 库解析 JSON 数据
21 QJson::Parser parser;
22 bool ok;
23
24 QVariant result = parser.parse(responseData, &ok);
25
26 if (ok && result.type() == QVariant::List) {
27 QVariantList timeline = result.toList();
28
29 QVariantList parsedTimeline;
30
31 foreach (const QVariant &item, timeline) {
32 QVariantMap itemMap = item.toMap();
33 parsedTimeline.append(itemMap["content"]); // 假设 content 是你想显示的字段
34 }
35
36 emit timelineFetched(parsedTimeline);
37 } else {
38 qDebug() << "Error parsing JSON data";
39 }
40 } else {
41 qDebug() << "Network error occurred:" << reply->errorString();
42 }
43
44 reply->deleteLater();
45}
46

Powered by Opengist Load: 82ms