Psych.to_json can create invalid JSON if scalar values are not marked at quoted
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 35/100
Piste de recherche
Commencez par lib/psych/json/yaml_events.rb à la ligne indiquée par le lien et reproduisez le problème à l’aide du test exécutable fourni dans le gist. Suivez la manière dont les valeurs scalaires et les clés de mappage sont marquées pendant Psych.to_json, puis ajoutez un test de régression montrant que le document généré est un JSON valide avec des clés entre guillemets.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Steps to reproduce
I have created an executable test for this bug: https://gist.github.com/ianks/ba1f7175754780168c2a6618f13c95ec
I did not know whether to report this to Psych or Rails, just let me know if it belongs elsewhere and I will move the issue.
Expected behavior
Psych.to_json should emit valid JSON. Currently, not all keys are double-quoted; which although valid in JS, is not valid JSON.
Actual behavior
It emits invalid json, which can be seen in this example:
{"raw_attributes": {"id": null}, "attributes": {attributes: {"id": {name: "id", value_before_type_cast: null,
type: {precision: null, scale: null, limit: null, range: {"begin": -2147483648,
"end": 2147483648, "excl": true}}, original_attribute: null}}}, "new_record": true,
"active_record_yaml_version": 1}
System configuration
Rails version: 5.0.0
Ruby version: 2.3.1
Notes
Upon further investigation, it seems the scalar types for attributes are not marked as quoted. Even if they are not marked as quoted, should we still quote the values since all keys need to be quoted in JSON? (corresponding code https://github.com/ruby/psych/blob/master/lib/psych/json/yaml_events.rb#L21)
- Langage dominant
- Ruby
- Étoiles
- 596
- Forks
- 223
- Merge moyen
- 8 h 38 min
- PR mergées (30 j)
- 2
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de ruby/psych
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
-
Documentation
Difficulté 1/5 Moins d'une heure Accessibilité débutants 72/100
-
Psych.dump raises Encoding::CompatibilityError for UTF-16/UTF-32 stringsPeut-être pris @Halvanhelv l’a pris il y a 54 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 55/100
-
Difficulté 4/5 3-5 jours Accessibilité débutants 68/100
-
Difficulté 4/5 3-5 jours Accessibilité débutants 52/100
Toutes les issues de ruby/psych
Issues similaires
-
JWT::EncodedToken raises TypeError for a non-object headerPeut-être pris @anakinj l’a pris aujourd’hui. Ouvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
jwt/ruby-jwt#780 · 1 réaction ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 82/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
zold-io/zold-ruby-sdk#85 ·
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
Les mainteneurs répondent en général sous 1 jour