toJsonObject method
Implementation
Map<String, dynamic> toJsonObject(
CosmosToJsonEncoding encoding, {
CosmosBech32Config? config,
}) {
final toJson = this.toJson();
if (encoding == CosmosToJsonEncoding.native) return toJson;
config ??= CosmosDefaultBech32Configs.cosmosHub;
// Keys define the field names + order (per class contract).
final keys = toJson.keys.toList();
final values = protoValues;
assert(
keys.length == values.length,
"$runtimeType: toJson() and protoValues must have the same length/order.",
);
final protoConfig = this.protoConfig();
final json = <String, dynamic>{};
final optionsMap = <String, List<ProtoOption>>{};
for (var i = 0; i < keys.length; i++) {
final key = keys[i];
final fieldConfig = protoConfig.fields.elementAtOrNull(i)?.options;
assert(
fieldConfig != null,
"Missing field options. maybe json customized.",
);
optionsMap[key] = fieldConfig ?? const <ProtoOption>[];
json[key] = _encodeValue(values[i], encoding, config);
}
return CosmosAminoUtils.toAminoJson(
json: json,
options: optionsMap,
config: config,
);
}