在Json中替换所有

时间:2016-06-30 13:10:36

标签: json groovy

我正在编写一个Groovy脚本(Groovy 2.4.6)

JsonBuilder对象包含:

 "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"
 ],

我希望GestionAffaire的每一行看起来像" SAM_GestionAffaire_ModifierSaisine" :" 1"

所以我用解析过的Json尝试了以下内容:      jsonString.replaceAll(" \","," \":\" 1 \",")

但是String中的任何内容都没有改变,我也尝试了基本的表达式,但字符串保持不变。

你有什么想法/替代方案吗?

此致

托马斯

2 个答案:

答案 0 :(得分:0)

假设你有一个Map中的数据(我假设你在地图中有它将它传递给_JsonBuilder对象?)

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"
]]

然后你可以改变地图:

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

这样就像你想要的那样:

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'
    ]]

答案 1 :(得分:0)

你是如何调用它的?

此调用的结果是一个字符串,它不会修改原始

def newString = jsonString.replaceAll( ... )