BloomCatalog.fromJsonString constructor

BloomCatalog.fromJsonString(
  1. String locale,
  2. String jsonString
)

Creates a BloomCatalog by decoding a JSON-encoded string.

Throws a FormatException if jsonString does not decode to a valid JSON object map.

const json = '{"welcome": "Hello!", "notifications": "{count} new"}';
final catalog = BloomCatalog.fromJsonString('en-US', json);

Implementation

factory BloomCatalog.fromJsonString(String locale, String jsonString) {
  final dynamic decoded = jsonDecode(jsonString);
  if (decoded is Map<String, dynamic>) {
    return BloomCatalog.fromJson(locale, decoded);
  } else if (decoded is Map) {
    return BloomCatalog.fromJson(
      locale,
      decoded.map((k, v) => MapEntry(k.toString(), v)),
    );
  }
  throw FormatException(
      'Invalid JSON for BloomCatalog: expected a JSON object.');
}