简体   繁体   中英

ReplaceAll in Json

I'm writting a Groovy script (Groovy 2.4.6)

A JsonBuilder object contains :

 "GestionAffaire": [
    "SAM_GestionAffaire_ModifierSaisine",
    "SAM_GestionAffaire_DetaillerProjetCollectif",
    "SAM_GestionAffaire_ControlerReservationPossible",
    "SAM_GestionAffaire_RechercherSaisine",
    "SAM_GestionAffaire_CloturerAffaireSurMesure",
    "SAM_GestionAffaire_AjouterNoteProjetCollectif",
    "SAM_GestionAffaire_ListerNoteProjetCollectif",
    "SAM_GestionAffaire_ConsulterSuiviCommAvv",
    "SAM_GestionAffaire_RechercherProjetCollectif",
    "Enrichment_PUB_PUB_CREASM_1",
    "SAM_GestionAffaire_EnregistrerProjetCollectifValide",
    "SAM_GestionAffaire_EnregistrerProjetCollectif",
    "SAM_GestionAffaire_SupprimerProjetCollectif",
    "SoapHttpDelivery_SUB_EPAVVI_1",
    "SAM_GestionAffaire_ReserverEntreprise",
    "SAM_GestionAffaire_AnnulerContractualisationProjetCollectif",
    "Enrichment_PUB_PUB_MAJPSM_3",
    "Enrichment_PUB_PUB_MAJPSM_2",
    "SAM_GestionAffaire_EnregistrerProjetCollectifEtude",
    "Enrichment_PUB_PUB_CPSM_2",
    "SAM_GestionAffaire_ContractualiserProjetCollectif"
 ],

I want each line of GestionAffaire to look like "SAM_GestionAffaire_ModifierSaisine" : "1"

So I tried the following with the parsed Json: jsonString.replaceAll("\\"," , "\\": \\"1\\"," )

But nothing in the String is changing, I also tried basic expressions but the String remains unchanged.

Do you have any idea / alternative ?

Regards

Thomas

SO assuming you have the data in a Map (I assume you had it in a map to pass it to a _JsonBuilder object?)

def map = [GestionAffaire:[
    "SAM_GestionAffaire_ModifierSaisine",
    "SAM_GestionAffaire_DetaillerProjetCollectif",
    "SAM_GestionAffaire_ControlerReservationPossible",
    "SAM_GestionAffaire_RechercherSaisine",
    "SAM_GestionAffaire_CloturerAffaireSurMesure",
    "SAM_GestionAffaire_AjouterNoteProjetCollectif",
    "SAM_GestionAffaire_ListerNoteProjetCollectif",
    "SAM_GestionAffaire_ConsulterSuiviCommAvv",
    "SAM_GestionAffaire_RechercherProjetCollectif",
    "Enrichment_PUB_PUB_CREASM_1",
    "SAM_GestionAffaire_EnregistrerProjetCollectifValide",
    "SAM_GestionAffaire_EnregistrerProjetCollectif",
    "SAM_GestionAffaire_SupprimerProjetCollectif",
    "SoapHttpDelivery_SUB_EPAVVI_1",
    "SAM_GestionAffaire_ReserverEntreprise",
    "SAM_GestionAffaire_AnnulerContractualisationProjetCollectif",
    "Enrichment_PUB_PUB_MAJPSM_3",
    "Enrichment_PUB_PUB_MAJPSM_2",
    "SAM_GestionAffaire_EnregistrerProjetCollectifEtude",
    "Enrichment_PUB_PUB_CPSM_2",
    "SAM_GestionAffaire_ContractualiserProjetCollectif"
]]

Then you can just change the map:

map.GestionAffaire = map.GestionAffaire.collectEntries { [it, '1'] }

so that it is like you want:

assert map == [GestionAffaire:[
        "SAM_GestionAffaire_ModifierSaisine": '1',
        "SAM_GestionAffaire_DetaillerProjetCollectif": '1',
        "SAM_GestionAffaire_ControlerReservationPossible": '1',
        "SAM_GestionAffaire_RechercherSaisine": '1',
        "SAM_GestionAffaire_CloturerAffaireSurMesure": '1',
        "SAM_GestionAffaire_AjouterNoteProjetCollectif": '1',
        "SAM_GestionAffaire_ListerNoteProjetCollectif": '1',
        "SAM_GestionAffaire_ConsulterSuiviCommAvv": '1',
        "SAM_GestionAffaire_RechercherProjetCollectif": '1',
        "Enrichment_PUB_PUB_CREASM_1": '1',
        "SAM_GestionAffaire_EnregistrerProjetCollectifValide": '1',
        "SAM_GestionAffaire_EnregistrerProjetCollectif": '1',
        "SAM_GestionAffaire_SupprimerProjetCollectif": '1',
        "SoapHttpDelivery_SUB_EPAVVI_1": '1',
        "SAM_GestionAffaire_ReserverEntreprise": '1',
        "SAM_GestionAffaire_AnnulerContractualisationProjetCollectif": '1',
        "Enrichment_PUB_PUB_MAJPSM_3": '1',
        "Enrichment_PUB_PUB_MAJPSM_2": '1',
        "SAM_GestionAffaire_EnregistrerProjetCollectifEtude": '1',
        "Enrichment_PUB_PUB_CPSM_2": '1',
        "SAM_GestionAffaire_ContractualiserProjetCollectif": '1'
    ]]

How are you invoking this?

The result of this call IS a string, it will not modify the original

def newString = jsonString.replaceAll( ... )

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM