Split Json, transform result

Bonjour, je me permets de vous contacter pour avoir de l'aide sur une configuration avec logstash.
Je tourne en rond depuis plusieurs jours....

Mon json ressemble à ça :

    ...
    "inventaire": {
        "Applications": [
           {
            "name": "Visionneuse HTML",
            "packageid": "com.android.htmlviewer",
            "versionCode": "27",
            "versionName": "8.1.0",
            "firstTimeStamp": "0",
            "lastTimeStamp": "0",
            "lastTimeUsed": "0",
            "totalTimeInForeground": "0"
          },
          {
            "name": "Companion Device Manager",
            "packageid": "com.android.companiondevicemanager",
            "versionCode": "27",
            "versionName": "8.1.0",
            "firstTimeStamp": "0",
            "lastTimeStamp": "0",
            "lastTimeUsed": "0",
            "totalTimeInForeground": "0"
          }
       ],  
       "time": 1607604006845
     },
     ...
     ```

Mais je souhaite enregistrer dans elasic un json ayant pour format : 
...
  "inventaire": {
    "com.android.htmlviewer": {
	"name": "Visionneuse HTML",
	"versionCode": "27",
	"versionName": "8.1.0",
	"firstTimeStamp": "0",
	"lastTimeStamp": "0",
	"lastTimeUsed": "0",
	"totalTimeInForeground": "0"
      },
      "com.android.companiondevicemanager" : {
	"name": "Companion Device Manager",
	"versionCode": "27",
	"versionName": "8.1.0",
	"firstTimeStamp": "0",
	"lastTimeStamp": "0",
	"lastTimeUsed": "0",
	"totalTimeInForeground": "0"
      },  
      "time": 1607604006845
 },
 ...

Donc supprimer la partie Applications et remplacer l'array par un json simple qui a pour clé la valeur de packageid ( qui est dans le json de départ ).

Je précise que j'ai d'autres informations avant et après ce jsonarray et je ne souhaite pas les modifier.

Désolé je ne parle pas anglais, je le fais donc en français pour éviter de dire n'importe quoi dans une autre langue .

En vous remerciant par avance de l'aide que vous pourrez m'apporter.

It needs a lot of error handling to be added, but this will do it...

    ruby {
        code => '
            apps = event.get("[inventaire]")
            if apps
                h = {}
                h["time"] = apps["time"]
                apps["Applications"].each { |x|
                    h[x.delete("packageid")] = x
                }
                event.set("inventaire", h)
            end
        '
    }

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.