Не удается получить доступ к данным в сериализированном объекте JSON Flutter - PullRequest
0 голосов
/ 08 октября 2019

Я пытаюсь сериализовать данные 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.

1 Ответ

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

Я заметил, что у вас есть неверная цитата вместо буквы цитаты

 name: json[‘restaurant_name'] as String,

попробуйте это

name: json['restaurant_name'] as String,
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...