Я пытаюсь сериализовать данные JSON в созданный вручную объект. Всякий раз, когда я пытаюсь получить доступ к данным, я получаю нулевое значение, но, если я печатаю длину сериализованных данных, мне говорят, что в моем массиве 8 элементов. В настоящее время я использую json_annotation: ^ 2.0.0 и json_serializable: как зависимости в моем проекте.
Вот код, который я пробовал до сих пор:
Мой объект:
class Restaurant {
int id;
String name;
String address;
String city;
String restaurantPhoto;
String state;
double lat;
double long;
String rating;
Restaurant({
this.id,
this.address,
this.city,
this.restaurantPhoto,
this.lat,
this.long,
this.name,
this.state,
this.rating,
});
factory RestaurantPhoto.fromJSON(Map<String, dynamic> json){
return Restaurant(
id: json['id'] as int,
name: json[‘restaurant_name'] as String,
address: json['street_address'] as String,
city: json['city'] as String,
restaurantPhoto: json['restaurant_photo'] as String,
state: json['state'] as String,
lat: json['lat'] as double,
long: json['lng'] as double,
rating: json['rating'] as String,
);
}
}
Вот мой метод:
Future getRestaurants() async {
var url = 'http://restaurant-8821.herokuapp.com/api/customer/restaurant/';
http.get(url, headers: {
"Content-Type": "application/x-www-form-urlencoded"
}).then((http.Response response) {
// print(response.body);
Map<String, dynamic> responseData = json.decode(response.body);
Restaurant restaurant = Restaurant.fromJSON(responseData);
print(responseData);
print(restaurant.name);
print(restaurant().length);
});
}
Из метода будут напечатаны три элемента и напечатано responseData:
{restaurant: [{id: 4, restaurant_name: The Oasis, phone: 123-123-1234, street_address: 456 Fake St, restaurant_logo: https://restaurant.s3.amazonaws.com/restaurant_logo/restaurantLogo_jXon4qm.jpg, restaurant_photo: https://restaurant.s3.amazonaws.com/restaurant_photo/farmas.jpg, city: New York, state: New York, zip_Code: 12345, lat: 40.0, lng: 40.0, latlng: (40.7770112244898, -74.2110798163265), opening_hours: [], ratings: 3.0},
Название ресторана равно нулю и restaurant.string. длина распечатывает 12.