parse method
Parses JSON with layout metadata extraction.
Returns a LayoutAwareParseResult containing both the parsed data and formatting metadata for layout preservation.
Implementation
LayoutAwareParseResult parse(String json) {
if (json.trim().isEmpty) {
return const LayoutAwareParseResult(data: {});
}
final data = jsonDecode(json);
if (data is! Map<String, dynamic>) {
return LayoutAwareParseResult(
data: {'_value': data},
);
}
final indentSpaces = _detectIndentation(json);
final isMinified = _isMinified(json);
final keyMeta = <String, dynamic>{
'_root': KeyMetadata(
jsonMeta: JsonMeta(
indentSpaces: isMinified ? 0 : indentSpaces,
),
).toJson(),
};
return LayoutAwareParseResult(
data: data,
keyMeta: keyMeta,
);
}