Stavo leggendo RFC 4627 e non riesco a capire se il seguente è JSON valido o meno. Considerate questo testo minimalista JSON:Sequenza di escape Unicode JSON - in minuscolo o no?
["\u005c"]
Il problema è la minuscoloc
.
Secondo il testo della RFC è ammesso:
Ogni personaggio può essere sfuggito. Se il carattere si trova nel piano multilingue (da U + 0000 a U + FFFF), potrebbe essere rappresentato come sequenza di sei caratteri: un solido solidale, seguito da con la lettera minuscola u seguita da quattro cifre esadecimali che codifichi il punto di codice del personaggio. Le lettere esadecimali A anche se F possono essere maiuscole o minuscole. Quindi, ad esempio, una stringa contenente un solo carattere di solidus inverso può essere rappresentata come "\ u005C".
(enfasi mia)
Il problema è che l'RFC contiene anche il grammatica per questo:
char = unescaped/
escape (
%x22/ ; " quotation mark U+0022
%x5C/ ; \ reverse solidus U+005C
%x2F/ ;/ solidus U+002F
%x62/ ; b backspace U+0008
%x66/ ; f form feed U+000C
%x6E/ ; n line feed U+000A
%x72/ ; r carriage return U+000D
%x74/ ; t tab U+0009
%x75 4HEXDIG) ; uXXXX U+XXXX
dove HEXDIG
è definito nella RFC riferimento 4234 come
HEXDIG = DIGIT/"A"/"B"/"C"/"D"/"E"/"F"
che include solo lettere maiuscole.
FWIW, da quello che ho cercato la maggior parte dei parser JSON accetta lettere maiuscole e minuscole.
Domanda (e): Che cosa è effettivamente corretto? C'è una contraddizione e la grammatica nella RFC dovrebbe essere risolta?
Non si riferisce solo alla grammatica della scrittura di altre grammatiche? Voglio dire che "HEXDIG" e "heXdIG" devono essere usati in modo intercambiabile, ma sicuramente non possono fai riferimento a tutti i caratteri della grammatica come "A", altrimenti non puoi definire ** qualsiasi ** linguaggio sensibile al maiuscolo/minuscolo !? –
@DanielFrey: Non penso - è una parte separata della RFC: " I nomi delle regole non fanno distinzione tra maiuscole e minuscole. "Concordo sul fatto che sia tutt'altro che chiaro. –
+1 Ho scritto il primo commento prima della modifica. Con la modifica ha senso ora e sì, sono d'accordo non è la specifica più chiara :) –