json_query_dio 0.1.0
json_query_dio: ^0.1.0 copied to clipboard
Thin Dio integration for json_query - pick/map fields straight off a Response.
example/json_query_dio_example.dart
// Run with: dart run example/json_query_dio_example.dart
import 'package:dio/dio.dart';
import 'package:json_query_dio/json_query_dio.dart';
class User {
final int id;
final String name;
final String package;
User({required this.id, required this.name, required this.package});
factory User.fromJson(Map<String, dynamic> json) => User(
id: json['id'] as int,
name: json['name'] as String,
package: json['package'] as String,
);
@override
String toString() => 'User(id: $id, name: $name, package: $package)';
}
void main() async {
final dio = Dio(BaseOptions(baseUrl: 'https://example.com'));
// Any Dio Response works with these extensions - substituting a manually
// built one here so this example runs without a real network call.
final response = Response<dynamic>(
requestOptions: RequestOptions(path: '/user'),
data: {
'data': {
'user': {
'id': 123,
'profile': {'name': 'Ebrahim'},
'subscription': {
'package': {'name': 'Fiber'},
},
},
},
},
);
// In a real app: final response = await dio.get('/user');
final user = response.map<User>(
{
'id': '.data.user.id',
'name': '.data.user.profile.name',
'package': '.data.user.subscription.package.name',
},
User.fromJson,
);
print(user);
dio.close();
}