fromJson static method
BaseChartConfig
fromJson(
- Map<
String, dynamic> json, { - bool validatePayload = false,
- bool strictValidation = false,
- void onValidationResult(
- ValidationResult result
- void onPayloadNormalizationResult(
- PayloadNormalizationResult result
- bool autoNormalizePayload = false,
- bool sanitizeTradingPayload = true,
- bool dropUnsupportedSampling = true,
- int? normalizeDefaultThreshold,
- ChartDataMode normalizeDefaultMode = ChartDataMode.auto,
- PayloadNormalizationOptions? normalizationOptions,
- int validationReportMaxIssues = 5,
Create a chart configuration from JSON
Implementation
static BaseChartConfig fromJson(
Map<String, dynamic> json, {
bool validatePayload = false,
bool strictValidation = false,
void Function(ValidationResult result)? onValidationResult,
void Function(PayloadNormalizationResult result)?
onPayloadNormalizationResult,
bool autoNormalizePayload = false,
bool sanitizeTradingPayload = true,
bool dropUnsupportedSampling = true,
int? normalizeDefaultThreshold,
ChartDataMode normalizeDefaultMode = ChartDataMode.auto,
PayloadNormalizationOptions? normalizationOptions,
int validationReportMaxIssues = 5,
}) {
final fallbackNormalizationOptions =
normalizationOptions ??
PayloadNormalizationOptions(
dropUnsupportedSampling: dropUnsupportedSampling,
defaultThreshold: normalizeDefaultThreshold,
defaultMode: normalizeDefaultMode,
sanitizeTradingPayload: sanitizeTradingPayload,
);
final effectiveNormalizationOptions = PayloadNormalizationOptions.resolve(
json,
fallback: fallbackNormalizationOptions,
);
final shouldNormalizePayload =
PayloadNormalizationOptions.shouldAutoNormalize(
json,
fallback: autoNormalizePayload,
);
final normalizationResult = shouldNormalizePayload
? ChartConfigValidator.normalizePayloadWithReport(
json,
options: effectiveNormalizationOptions,
)
: PayloadNormalizationResult.passThrough(json);
onPayloadNormalizationResult?.call(normalizationResult);
final effectiveJson = normalizationResult.normalizedPayload;
if (validatePayload) {
final result = ChartConfigValidator.validateJsonPayload(
effectiveJson,
deep: true,
);
onValidationResult?.call(result);
if (strictValidation && !result.isValid) {
throw FormatException(
result.toReport(maxIssues: validationReportMaxIssues).toPlainText(),
);
}
}
return BaseChartConfig.fromJson(effectiveJson);
}