diff --git a/packages/credential_manifest/lib/src/helpers/get_text_from_credential.dart b/packages/credential_manifest/lib/src/helpers/get_text_from_credential.dart index f801fe3bc..699ec2ae8 100644 --- a/packages/credential_manifest/lib/src/helpers/get_text_from_credential.dart +++ b/packages/credential_manifest/lib/src/helpers/get_text_from_credential.dart @@ -6,7 +6,26 @@ List getTextsFromCredential( ) { final textList = []; try { - final fieldsPath = JsonPath(jsonPath.replaceAll(RegExp(r'\.vc(?=\.)'), '')); + /// finds all occurrences of a dot followed by one or more digits + /// in the jsonPath string + final numericStringFinderRegex = RegExp(r'\.(\d+)'); + + var updatedJsonPath = + jsonPath.replaceAllMapped(numericStringFinderRegex, (match) { + final key = match.group(1); + + ///e.g. $.age_equal_or_over.18 becomes $.age_equal_or_over['18'] + return "['$key']"; + }); + + /// matches the string .vc only if it is immediately followed by another dot + /// matches: .vc. , ab.vc. + /// doesnot match: .vca.asd + final vcFinderRegex = RegExp(r'\.vc(?=\.)'); + updatedJsonPath = updatedJsonPath.replaceAll(vcFinderRegex, ''); + + final fieldsPath = JsonPath(updatedJsonPath); + fieldsPath.read(data).forEach((a) { final dynamic value = a.value; if (value is String) {