Unexpected end of JSON input

C’est la chose la plus curieuse, dans le navigateur, j’obtiens le json sans problème. C’est le texte que j’ai collé dans le premier message

Le navigateur fait des choses que ne fait pas le script.
Avez-vous essayé en cochant Vérifier SSL dans les options de la commande ?
image

Et en renseignant user/password que le navigateur connait et ne redemande plus. Il a un cookie.

Même en navigation privée ?

Veuillez ne plus tag une personne / dev en direct d’autant plus quand rien ne dis que le plug-in soit en cause.
C’est extrêmement intrusif et contraire aux règles de community.

2 « J'aime »

Ce n’est pas un nom d’utilisateur et un mot de passe, c’est une clé API.

La demande fonctionne correctement via n’importe quel navigateur.

C’est jeedom qui n’interprète pas bien json

Je crois sincèrement qu’il s’agit d’une erreur de plugin script

Désolé.
Qui est le développeur du plugin script pour demander de l’aide ?

Et pourtant avec votre json:

Je reste persuadé que c’est un problème de récupération du json.

C’est Correct. C’est le plugin qui est chargé de récupérer le json. Le plugin ne doit pas bien récupérer.

Pour vous aider, il faudrait fournir (en Message direct) l’URL qui permet de récupérer le json .

https://opendata.aemet.es/opendata/sh/12bd2a6d

vous devez utiliser l’url rapide. Parce que les données expirent. Si c’est le cas, je le génère à nouveau avec ma clé API

https://opendata.aemet.es/opendata/sh/12bd2a6d c’est à nouveau valable

1 « J'aime »

https://opendata.aemet.es/opendata/sh/12bd2a6d de nouveau disponible

Je rafraîchis régulièrement pour qu’il n’expire pas

Il y a des caractères utf8 invalides dans le json:


Le json ne devrait contenir que des caractères utf8 et là il y a des iso8859/windows.

Il faudrait pouvoir ajouter un flag JSON_INVALID_UTF8_SUBSTITUTE ou JSON_INVALID_UTF8_IGNORE à json_decode ce qui n’est pas possible sans modifier le plugin script.

Pouvez- vous faire corriger le json qui est incorrect ? Je vois qu’en face c’est un organisme d’état donc pas de solution rapide de ce coté.
Sinon il faudrait faire un script intermédiaire qui corrigerait le json
ou demander l’ajout des flags dans le plugin script.

1 « J'aime »

Vous n’avez pas compris: vous êtes sur un forum communautaire, vous n’avez donc pas à interpeller l’auteur d’un plug-in directement.
De plus ici c’est un plug-in officiel, c’est donc l’équipe jeedom qui est responsable.

Un petit rappel des règles: Comment nous aider à vous aider - ou Comment poser une bonne question?

La modif qu’il faudrait faire dans le plugin script pour que les caractères UTF8 invalides soient supprimés des fichiers json :
C’est dans le fichier core/class/script.class.php, fonction execute

switch ($this->getConfiguration('requestType')) {
....
 case 'json':

Avant:

    // $json_str = str_replace(": nan ", ": null ",$json_str); 
	$json = json_decode($json_str, true);
	if ($json === null) {
	  throw new Exception(__('Json invalide ou non décodable : ', __FILE__) . $json_str);
	}
	

Après:

    // $json_str = str_replace(": nan ", ": null ",$json_str); 
	$json = json_decode($json_str, true);
    if ($json === null) {
      $json = json_decode($json_str, true, 512, JSON_INVALID_UTF8_IGNORE);
      if ($json === null) {
        throw new Exception(__('Json invalide ou non décodable : ', __FILE__) . $json_str);
      }
    }

ou directement

    // $json_str = str_replace(": nan ", ": null ",$json_str); 
	$json = json_decode($json_str, true, 512, JSON_INVALID_UTF8_IGNORE);
	if ($json === null) {
	  throw new Exception(__('Json invalide ou non décodable : ', __FILE__) . $json_str);
	}
	

Il faut php 7.2 minimum pour cette modif.

Le résultat avec une requête 0>origen>productor qui contient des UTF8 invalides
image

2 « J'aime »

Wow merci.
je vais le modifier mais
Que faudrait-il faire pour que l’équipe Jeedom prenne en compte votre suggestion de façon définitive ?

Bonjour,
Faire un PR sur git jeedom et qu’il soit accepter

je ne suis pas à ce niveau de connaissances

1 « J'aime »

J’ai fait la PR en beta:

5 « J'aime »

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