EntityAnnotation.fromJson constructor
EntityAnnotation.fromJson(
- 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);
}