我是 Flutter 的新手,我正在通过 Json 解析,我正在使用 chopper 库,以及这个公共 api:https : //jsonplaceholder.typicode.com/posts/ 每当我调用 api 时都会出现上述错误。我在项目中添加了日志记录,没有打印任何 json。我试图删除 json 字段,并且只添加了正文,以防它出现解析问题,但没有任何改变。如果有人可以提供帮助,那就太好了:
json文件:
@JsonSerializable()
class JsonPlaceholderQuery {
factory JsonPlaceholderQuery.fromJson(Map<String, dynamic> json) =>
_$JsonPlaceholderQueryFromJson(json);
Map<String, dynamic> toJson() => _$JsonPlaceholderQueryToJson(this);
int userId;
int id;
String title;
String body;
JsonPlaceholderQuery({ required this.userId, required this.id,
required this.title, required this.body
});
}
@JsonSerializable()
class AllJsonData {
List<JsonPlaceholderQuery> jsonPlaceholder;
AllJsonData({required this.jsonPlaceholder});
factory AllJsonData.fromJson(Map<String, dynamic> json) =>
_$AllJsonDataFromJson(json);
Map<String, dynamic> toJson() => _$AllJsonDataToJson(this);
}
斩波器服务:
@ChopperApi()
abstract class JsonPlaceHolderRequest extends ChopperService {
@Get()
Future<Response<Result<AllJsonData>>>request();
static JsonPlaceHolderRequest create() {
final client = ChopperClient(
baseUrl: 'https://jsonplaceholder.typicode.com/posts',
interceptors: [HttpLoggingInterceptor()],
converter: ModelConverter(),
errorConverter: const JsonConverter(),
services: [
_$JsonPlaceHolderRequest(),
],
);
return _$JsonPlaceHolderRequest(client);
}
}
调用API如下:
Widget getJsonPlaceHolders(BuildContext context) {
return FutureBuilder<Response<Result<AllJsonData>>>(
future: JsonPlaceHolderRequest.create().request(),
builder: (context, snapshot) {
if(snapshot.connectionState == ConnectionState.done) {
if(snapshot.hasError) {
return Center(
child: Text(snapshot.error.toString(), textAlign: TextAlign.center,
textScaleFactor: 1.3,) ,
);
}
final results = snapshot.data?.body;
if (results is Error) {
return Center(
child: Text(snapshot.error.toString(), textAlign: TextAlign.center,
textScaleFactor: 1.3,) ,
);
}
final query = (results as Success).value;
// currentSearchList.addAll(query.hits);
print('Total JSON PLACEHOLDER');
return buildRecipeList(context, currentSearchList);
} else {
return CircularProgressIndicator();
}
},
);
}