AIDE Pour Parser un Json

Tags: #<Tag:0x00007fcbaab1aaa8>

Bonjour, je galère pour parser une valeur dans un json. J’ai bien vu des exemples mais je n’arrive pas a adapter.

si quelqu’un de compétent passe par la, ca serait sympa.

Dans je json suivant (je ne l’ai pas mis en entier volontairement) :

{
    "command": "serverinfo",
    "info": {
        "activeEffects": [
            {
                "args": {
                    "center_x": 0.5,
                    "center_y": 0.5,
                    "custom-colors": [],
                    "custom-colors2": [],
                    "enable-second": false,
                    "random-center": false,
                    "reverse": false,
                    "rotation-time": 7,
                    "smoothing-custom-settings": null
                },
                "name": "Rainbow swirl fast",
                "priority": 0,
                "script": ":/effects//swirl.py",
                "timeout": 3000
            }
        ],
        "activeLedColor": [],
        "adjustment": [
            {
                "backlightColored": false,
                "backlightThreshold": 0,
                "blue": [
                    0,
                    0,
                    255
                ],
                "brightness": 100,
                "brightnessCompensation": 100,
                "cyan": [
                    0,
                    255,
                    255
                ],
                "gammaBlue": 1.5,
                "gammaGreen": 1.5,
                "gammaRed": 1.5,
                "green": [
                    0,
                    255,
                    0
                ],
                "id": "default",
                "magenta": [
                    255,
                    0,
                    255
                ],
                "red": [
                    255,
                    0,
                    0
                ],
                "white": [
                    255,
                    255,
                    255
                ],
                "yellow": [
                    255,
                    255,
                    0
                ]
            }
        ],
        "components": [
            {
                "enabled": false,
                "name": "ALL"
            },
            {
                "enabled": false,
                "name": "SMOOTHING"
            },
            {
                "enabled": false,
                "name": "BLACKBORDER"
            },
            {
                "enabled": false,
                "name": "FORWARDER"
            },
            {
                "enabled": false,
                "name": "BOBLIGHTSERVER"
            },

J’aimerais récupérer la valeur (TRUE/FALSE) de « enabled » du name:ALL dans « components ».

Si une bonne âme passe par là. Merci

Essaye :

components>0>enabled

EDIT :

Oui plutôt :

info>components>0>enabled

Si la ligne de jeandhom ne fonctionne pas, j’ajouterai info en plus

info > components > 0 > enabled

Antoine

1 J'aime

Merci pour vos réponses.

J’ai oublié de spécifié un truc. La récupération ne fonctionne pas du tout avec la méthode JSON dans le plugin script, j’obtiens un message :

Json

Ce qui ne me choque pas parce que je ne parviens pas à récupérer ce JSON par un navigateur en HTTP.

Pourtant je parviens bien a le récupérer et même à agir sur la configuration en curl dessus via un script tel que : curl -i -X POST 'http://192.168.0.207:8090/json-rpc' --data '{"command":"componentstate","componentstate":{"component":"ALL","state":false}}'

Du coup je pensais plus à une solution de ce type pour pouvoir réussir à le parser :

https://community.jeedom.com/t/aide-parser-json/24034/3

J’ai essayé mais je n’y arrive pas.

Merci pour votre aide

Salut

Il faut peut-être avoir le login et password dans la request json? Peux-tu donner plus d’info sur la source du json.

Antoine

Il n’y a pas de Login/Password (comme un peut le voir dans ma requete curl qui fonctionne. C’est un Server Hyperion pour gérer de l’ambilight.

Ce que tu fais m’intéresse particulièrement. J’imagine que tu veux déclencher des automatismes en fonction de l’état de l’ambilight.

Je me suis moi aussi cassé les dents sur ce json. J’ai demandé de l’aide sur un topic lié à Hyperion mais pas de retour.

Si tu as besoin d’un coup de main (en dehors du json), je suis là

Merci a toi. Je parviens a agir dessus (activer/désactiver une instance) en curl sans problème. Du coup en fonction de l’état de mon kodi (lecture en cours ou non), j’allume l’ambilight ou pas via un scénario.
Ca fonctionne bien.

Je voulais juste avoir un retour d’état en +

Et avec une request http type
http://192.168.0.207:8090/json-rpc?request={« command »:« componentstate »,« componentstate »:« component »:« ALL »,« state »:false}}

Inspiré par https://kodi.wiki/view/JSON-RPC_API#POST

Antoine

Oui, cette requête me permet de désactiver Hyperion, et je l’utilise déjà comme indiqué plus haut.

Mais ici je veux juste récupérer le statut .

Oui, j’ai bien compris mais je me demandais si on ne pouvait écrire sous la forme d’un lien http la requête entière. Kodi semble le permettre par exemple.

Antoine

Peut être oui. Mais après en terme de syntaxe je m’y perd avec les array imbriquées

C’est bon j’ai. Grace aux mecs du forum hyperion.

Voila la commande pour interroger l’état d’une instance :

curl -sS -X POST -H 'Content-Type:application/json' -H 'Accept:application/json' -d '{"command": "serverinfo"}' http://192.168.0.207:8090/json-rpc | jq '.info.components[] | select(.name == "ALL") | .enabled'
1 J'aime

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.