EntityAnnotation.fromJson constructor

EntityAnnotation.fromJson(
  1. Map json
)

Returns an instance of EntityAnnotation from a given json.

Implementation

factory EntityAnnotation.fromJson(Map<dynamic, dynamic> json) {
  final entities = <Entity>[];
  for (final dynamic entity in json['entities']) {
    final value = entity['type'];
    final EntityType type = value < EntityType.values.length
        ? EntityType.values[value]
        : EntityType.unknown;
    final raw = entity['raw'].toString();
    switch (type) {
      case EntityType.unknown:
        break;
      case EntityType.address:
        entities.add(AddressEntity(raw));
        break;
      case EntityType.dateTime:
        entities.add(DateTimeEntity(raw,
            dateTimeGranularity: DateTimeGranularity
                .values[entity['dateTimeGranularity'].toInt()],
            timestamp: entity['timestamp'].toInt()));
        break;
      case EntityType.email:
        entities.add(EmailEntity(raw));
        break;
      case EntityType.flightNumber:
        entities.add(FlightNumberEntity(raw,
            airlineCode: entity['code'], flightNumber: entity['number']));
        break;
      case EntityType.iban:
        entities.add(IbanEntity(raw,
            iban: entity['iban'], countryCode: entity['code']));
        break;
      case EntityType.isbn:
        entities.add(IsbnEntity(raw, isbn: entity['isbn']));
        break;
      case EntityType.money:
        entities.add(MoneyEntity(raw,
            fractionPart: entity['fraction'].toInt(),
            integerPart: entity['integer'].toInt(),
            unnormalizedCurrency: entity['unnormalized']));
        break;
      case EntityType.paymentCard:
        entities.add(PaymentCardEntity(raw,
            network: PaymentCardNetwork.values[entity['network'].toInt()],
            number: entity['number']));
        break;
      case EntityType.phone:
        entities.add(PhoneEntity(raw));
        break;
      case EntityType.trackingNumber:
        entities.add(TrackingNumberEntity(raw,
            carrier: TrackingCarrier.values[entity['carrier'].toInt()],
            number: entity['number']));
        break;
      case EntityType.url:
        entities.add(UrlEntity(raw));
        break;
    }
  }
  return EntityAnnotation(
      start: json['start'],
      end: json['end'],
      text: json['text'],
      entities: entities);
}