HtmlMetadata.fromJson constructor
HtmlMetadata.fromJson(
- Map<String, dynamic> json
)
Implementation
factory HtmlMetadata.fromJson(Map<String, dynamic> json) {
// The Rust serializes metadata as {"document": {...}, "links": [...], ...}
final document = json['document'] as Map<String, dynamic>? ?? {};
// keywords can be a list of strings or a string
List<String> parseKeywords(dynamic kw) {
if (kw is List) return kw.map((e) => e.toString()).toList();
if (kw is String) return kw.split(',').map((e) => e.trim()).toList();
return [];
}
return HtmlMetadata(
title: document['title'] as String?,
description: document['description'] as String?,
author: document['author'] as String?,
language: document['language'] as String?,
keywords: parseKeywords(document['keywords']),
canonicalUrl: document['canonical_url'] as String?,
baseHref: document['base_href'] as String?,
links: (json['links'] as List?)
?.map((l) => LinkMetadata.fromJson(l as Map<String, dynamic>))
.toList() ??
[],
images: (json['images'] as List?)
?.map((i) => ImageMetadata.fromJson(i as Map<String, dynamic>))
.toList() ??
[],
structuredData: (json['structured_data'] as List?)
?.map((s) => Map<String, dynamic>.from(s as Map))
.toList() ??
[],
);
}