parsePlaceFromJson function

Place parsePlaceFromJson(
  1. Map<String, Object?> json
)

Parses a Places API v2 JSON response into a platform interface inter.Place.

The JSON structure follows: https://developers.google.com/maps/documentation/places/web-service/reference/rest/v1/places#Place

Implementation

inter.Place parsePlaceFromJson(Map<String, Object?> json) {
  return inter.Place(
    id: json['id'] as String?,
    address: json['formattedAddress'] as String?,
    addressComponents: _parseAddressComponents(json['addressComponents']),
    businessStatus: _parseBusinessStatus(json['businessStatus'] as String?),
    attributions: _parseAttributions(json['attributions']),
    latLng: _parseLatLng(json['location'] as Map<String, Object?>?),
    name: _parseDisplayNameText(json['displayName']),
    nameLanguageCode: _parseDisplayNameLanguage(json['displayName']),
    openingHours: _parseOpeningHours(
      json['regularOpeningHours'] as Map<String, Object?>?,
    ),
    phoneNumber: json['nationalPhoneNumber'] as String?,
    photoMetadatas: _parsePhotos(json['photos']),
    plusCode: _parsePlusCode(json['plusCode'] as Map<String, Object?>?),
    priceLevel: _parsePriceLevel(json['priceLevel'] as String?),
    rating: (json['rating'] as num?)?.toDouble(),
    types: _parseTypes(json['types']),
    userRatingsTotal: (json['userRatingCount'] as num?)?.toInt(),
    utcOffsetMinutes: (json['utcOffsetMinutes'] as num?)?.toInt(),
    viewport: _parseViewport(json['viewport'] as Map<String, Object?>?),
    websiteUri: json['websiteUri'] != null
        ? Uri.tryParse(json['websiteUri'] as String)
        : null,
    reviews: _parseReviews(json['reviews']),
    // New API fields
    displayName: _parseLocalizedText(
      json['displayName'] as Map<String, Object?>?,
    ),
    primaryType: json['primaryType'] as String?,
    primaryTypeDisplayName: _parseLocalizedText(
      json['primaryTypeDisplayName'] as Map<String, Object?>?,
    ),
    shortFormattedAddress: json['shortFormattedAddress'] as String?,
    internationalPhoneNumber: json['internationalPhoneNumber'] as String?,
    nationalPhoneNumber: json['nationalPhoneNumber'] as String?,
    adrFormatAddress: json['adrFormatAddress'] as String?,
    editorialSummary: _parseLocalizedText(
      json['editorialSummary'] as Map<String, Object?>?,
    ),
    iconBackgroundColor: json['iconBackgroundColor'] as String?,
    iconMaskBaseUri: json['iconMaskBaseUri'] as String?,
    googleMapsUri: json['googleMapsUri'] as String?,
    currentOpeningHours: _parseOpeningHours(
      json['currentOpeningHours'] as Map<String, Object?>?,
    ),
    // Boolean service attributes
    curbsidePickup: json['curbsidePickup'] as bool?,
    delivery: json['delivery'] as bool?,
    dineIn: json['dineIn'] as bool?,
    reservable: json['reservable'] as bool?,
    servesBeer: json['servesBeer'] as bool?,
    servesBreakfast: json['servesBreakfast'] as bool?,
    servesBrunch: json['servesBrunch'] as bool?,
    servesDinner: json['servesDinner'] as bool?,
    servesLunch: json['servesLunch'] as bool?,
    servesVegetarianFood: json['servesVegetarianFood'] as bool?,
    servesWine: json['servesWine'] as bool?,
    takeout: json['takeout'] as bool?,
    servesCocktails: json['servesCocktails'] as bool?,
    servesCoffee: json['servesCoffee'] as bool?,
    servesDessert: json['servesDessert'] as bool?,
    goodForChildren: json['goodForChildren'] as bool?,
    allowsDogs: json['allowsDogs'] as bool?,
    restroom: json['restroom'] as bool?,
    goodForGroups: json['goodForGroups'] as bool?,
    goodForWatchingSports: json['goodForWatchingSports'] as bool?,
    liveMusic: json['liveMusic'] as bool?,
    outdoorSeating: json['outdoorSeating'] as bool?,
    menuForChildren: json['menuForChildren'] as bool?,
    pureServiceAreaBusiness: json['pureServiceAreaBusiness'] as bool?,
  );
}