Psych.to_json can create invalid JSON if scalar values are not marked at quoted
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 35/100
Rechercherichtung
Beginne mit lib/psych/json/yaml_events.rb an der verlinkten Zeile und reproduziere das Problem mithilfe des ausführbaren Tests im bereitgestellten Gist. Verfolge, wie skalare Werte und Mapping-Schlüssel während Psych.to_json markiert werden, und füge anschließend einen Regressionstest hinzu, der zeigt, dass das ausgegebene Dokument gültiges JSON mit in Anführungszeichen gesetzten Schlüsseln ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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)
- Vorherrschende Sprache
- Ruby
- Sterne
- 596
- Forks
- 223
- Ø Merge
- 8 Std. 38 Min.
- Gemergte PRs (30 T.)
- 2
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus ruby/psych
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
-
Documentation
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 72/100
-
Psych.dump raises Encoding::CompatibilityError for UTF-16/UTF-32 stringsEvtl. vergeben @Halvanhelv hat das vor 53 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 55/100
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 68/100
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 52/100
Ähnliche Issues
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 82/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
yegor256/intercepted#128 ·
-
documentation good first issue
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 85/100
ysb3996-blip/oops#51 ·
Maintainer antworten meist innerhalb von 1 Tag
-
good first issue
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 1 Tag
-
Remove leftover Cloud66 custom_web process from ProcfileEvtl. vergeben @ShahadatTest hat das heute übernommen. OffenDifficulty: Easy Good First Issue
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
rubyforgood/casa#7330 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag