ThingDescription.fromJson constructor
Creates a ThingDescription from a json
object.
Implementation
factory ThingDescription.fromJson(
Map<String, dynamic> json, {
bool validate = true,
}) {
if (validate) {
final validationResult = thingDescriptionSchema.validate(json);
if (!validationResult.isValid) {
throw ValidationException(
"Validation of Thing Description failed.",
validationResult.errors,
);
}
}
final Set<String> parsedFields = {};
final context = json.parseContext(parsedFields);
final prefixMapping = context.prefixMapping;
final atType = json.parseArrayField<String>("@type", parsedFields);
final title = json.parseRequiredField<String>("title", parsedFields);
final titles = json.parseMapField<String>("titles", parsedFields);
final description = json.parseField<String>("description", parsedFields);
final descriptions =
json.parseMapField<String>("descriptions", parsedFields);
final version = json.parseVersionInfo(prefixMapping, parsedFields);
final created = json.parseDateTime("created", parsedFields);
final modified = json.parseDateTime("modified", parsedFields);
final support = json.parseUriField("support", parsedFields);
final base = json.parseUriField("base", parsedFields);
final id = json.parseField<String>("id", parsedFields);
final security =
json.parseArrayField<String>("security", parsedFields) ?? [];
final securityDefinitions =
json.parseSecurityDefinitions(prefixMapping, parsedFields) ?? {};
final forms = json.parseForms(prefixMapping, parsedFields);
final properties = json.parseProperties(prefixMapping, parsedFields);
final actions = json.parseActions(prefixMapping, parsedFields);
final events = json.parseEvents(prefixMapping, parsedFields);
final links = json.parseLinks(prefixMapping, parsedFields);
final profile = json.parseUriArrayField("profile", parsedFields);
final schemaDefinitions = json.parseDataSchemaMapField(
"schemaDefinitions",
prefixMapping,
parsedFields,
);
final uriVariables =
json.parseMapField<Object>("uriVariables", parsedFields);
final additionalFields =
json.parseAdditionalFields(prefixMapping, parsedFields);
return ThingDescription._(
context: context,
title: title,
titles: titles,
description: description,
descriptions: descriptions,
version: version,
created: created,
modified: modified,
support: support,
base: base,
id: id,
forms: forms,
properties: properties,
actions: actions,
events: events,
links: links,
profile: profile,
schemaDefinitions: schemaDefinitions,
uriVariables: uriVariables,
additionalFields: additionalFields,
security: security,
securityDefinitions: securityDefinitions,
atType: atType,
rawThingDescription: json,
);
}