J'ai un code pour masquer les valeurs dans un fichier JSON. Mais j'ai le sentiment qu'il devrait y avoir une façon plus efficent de le faire.Plus façon efficent pour remplacer la chaîne pour masquer un fichier JSON (java)
Ceci est mon code actuel:
private static final String STRING_REPLACEMENT = "$1 \"String\" $4";
private static final String FLOAT_REPLACEMENT = "$1 \"float\" $4";
private static final String INT_REPLACEMENT = "$1 \"Integer\" $4";
private static final String BOOL_REPLACEMENT = "$1 \"Boolean\" $4";
Et le code de masquage réel:
out = out.replaceAll("(\"\\w+\"\\s?:)\\s?\"((\\\\\"|[^\"])*\")", "$1 \"String\"");
out = out.replaceAll("(\"\\w+\"\\s?:)\\s?(\\d+\\.\\d+)", "$1 \"float\"");
out = out.replaceAll("(\"\\w+\"\\s?:)\\s?(\\d+)", "$1 \"Integer\"");
out = out.replaceAll("(\"\\w+\"\\s?:)\\s?(true|false)", "$1 \"Boolean\"");
out = out.replaceAll("(\\[\\s?)\"((\\\\\"|[^\"])*\")(\\s?,)", STRING_REPLACEMENT);
out = out.replaceAll("(,\\s?)\"((\\\\\"|[^\"])*\")(\\s?,)", STRING_REPLACEMENT);
out = out.replaceAll("(,\\s?)\"((\\\\\"|[^\"])*\")(\\s?\\])", STRING_REPLACEMENT);
out = out.replaceAll("(\\[\\s?)((\\d)+\\.\\d+)(\\s?,)", FLOAT_REPLACEMENT);
out = out.replaceAll("(,\\s?)((\\d)+\\.\\d+)(\\s?,)", FLOAT_REPLACEMENT);
out = out.replaceAll("(,\\s?)((\\d)+\\.\\d+)(\\s?\\])", FLOAT_REPLACEMENT);
out = out.replaceAll("(\\[\\s?)((\\d)+)(\\s?,)", INT_REPLACEMENT);
out = out.replaceAll("(,\\s?)((\\d)+)(\\s?,)", INT_REPLACEMENT);
out = out.replaceAll("(,\\s?)((\\d)+)(\\s?\\])", INT_REPLACEMENT);
out = out.replaceAll("(\\[\\s?)((true|false))(\\s?,)", BOOL_REPLACEMENT);
out = out.replaceAll("(,\\s?)((true|false))(\\s?,)", BOOL_REPLACEMENT);
out = out.replaceAll("(,\\s?)((true|false))(\\s?\\])", BOOL_REPLACEMENT);
ce que quelqu'un a des suggestions pour améliorer cette situation. Je sais que je peux groupe le regex un peu mais je crains que cela influencera la lisibilité à Mutch. Et j'ai remarqué que si je combine les 3 lignes regex en un avec plus? en cela qu'il ne le trouve pas toujours correctement, donc le masquage échoue alors.
J'éviter d'effectuer tout type de remplacement dans un langage structuré, comme JSON en traitant un 'CHAINE' et en utilisant des expressions régulières pour commencer. Il est difficile de dire ici l'efficacité (car elle dépend aussi de la taille de la charge utile et occurrences, etc.), mais pour une meilleure lisibilité/maintenabilité vous pouvez utiliser un analyseur JSON/auteur au lieu et recréer l'objet. – Mena