Il problema del doppio backslash nel JSON

di il
8 risposte

Il problema del doppio backslash nel JSON

Lavorando con DMVC ed adoperando gli oggetti della famiglia TDataset,nella conversione automatica in JSON,succede che il backslash del path di un file diventa doppio.

Per ora non scendo nel dettaglio perchè mi sembra un problema comune.

Non ho idea di come eliminare questa anomalia al momento.

8 Risposte

  • Re: Il problema del doppio backslash nel JSON

    NON E' un'anomalia NE un problema. NE puoi RISOLVERLO a livello di JSON. 

    Il ‘backslash’ e' un “meta-carattere" per fare l'escaping, cioe' la codifica di cose piu' strane, come caratteri in unicode, tabulazione… ecc, tra cui il backslash stesso. 

    QUINDI per scrivere ‘\’ in un file JSON  DEVI scrivere ‘\\’. 

    QUALUNQUE libreria che legge e scrive file JSON lo converte nel formato corretto in automatico. 

    POICHE' il backslash e' parte di un Path Windows, puoi semplicemente rimpiazzato con il slash normale.

    Windows capisce entrambi i formati. 

  • Re: Il problema del doppio backslash nel JSON

    20/09/2024 - GrandfatherCoder ha scritto:


    Lavorando con DMVC ed adoperando gli oggetti della famiglia TDataset,nella conversione automatica in JSON,succede che il backslash del path di un file diventa doppio.

    E meno male che succede! :)
    Se non raddoppiasse il carattere sarebbe un JSON errato, per i motivi che ti ha detto migliorabile.

    20/09/2024 - GrandfatherCoder ha scritto:


    Per ora non scendo nel dettaglio perchè mi sembra un problema comune.

    Ma come fa a essere un problema? E' come dire che quando salvi dati in un CSV, c'è il “problema comune” che ti vengono aggiunti “punti e virgola” tra un valore e l'altro. Quello è il modo corretto di rappresentare il valore.

    20/09/2024 - GrandfatherCoder ha scritto:


    Non ho idea di come eliminare questa anomalia al momento.

    NON è una anomalia, e NON deve essere eliminata!

  • Re: Il problema del doppio backslash nel JSON

    CSV e' COMMA Separated Value ;-)

    Il ‘;’ non si chiama ‘semicolon’?

    ;-) 

  • Re: Il problema del doppio backslash nel JSON

    20/09/2024 - migliorabile ha scritto:


    Il ‘;’ non si chiama ‘semicolon’?

    Sì, è un carattere che si utilizza spesso al posto della virgola (è tollerato), per evitare le virgolette (") e per escludere all'occhio umano delle ambiguità quando ci sono valori decimali.

    Avendo a che fare spesso con tracciati di questo tipo con dati valuta che spesso usano questa convenzione, mi è venuto naturale pensare subito a quella. :D

    Ma sono sempre CSV, perché non si fa globalmente una distinzione o un nome di formato a parte.

    Scusate la digressione. :D

  • Re: Il problema del doppio backslash nel JSON

    Grazie del vostro intervento.

    Ho preso alla lettera i consigli di @migliorabile.

    Scusate,ma mi sono confuso e spiegato malissimo.Credevo di aver convertoto il JSON in stringhe quando ho iterato il JSON Array.

    Ancora devo imparare a gestire le stringhe JSON in delphi.

    Per essere testardo,dell'oggetto JSONValue,confondevo ToString con GetValue che è un convertitore in stringa vero e proprio.

    C'est la vie!

  • Re: Il problema del doppio backslash nel JSON

    23/09/2024 - GrandfatherCoder ha scritto:


    Ancora devo imparare a gestire le stringhe JSON in delphi.

    Riguardo il formato JSON in Delphi, trovi tutte le spiegazioni e le risorse che ti servono per gestirlo opportunamente (e in vari modi diversi a seconda delle necessità) nella documentazione ufficiale di Delphi.

    23/09/2024 - GrandfatherCoder ha scritto:


    Per essere testardo,dell'oggetto JSONValue,confondevo ToString con GetValue che è un convertitore in stringa vero e proprio.

    Il metodo ToString() ti restituisce una “rappresentazione in formato JSON” del valore che è rappresentato dall'oggetto.

    In pratica, TJSONValue e derivati sono una meta-rappresentazione di un valore, o più valori, appartenenti a un “pacchetto JSON”.

    Si utilizzano per incapsulare valori nativi (interi, booleani, ecc.) all'interno di oggetti che ne sono la rappresentazione JSON; tramite poi i metodi forniti da queste classi, puoi produrre il relativo JSON in uscita, oppure ricrearli da un JSON esistente.

    Ad ogni modo, come predetto, c'è tutto nella documentazione.

    Se può essere utile, ci sono anche librerie di terze parti gratuite e opensource a supporto, che fanno un lavoro decisamente discreto; ad esempio, dai un'occhiata a Neon - JSON Serialization Library for Delphi.

  • Re: Il problema del doppio backslash nel JSON

    23/09/2024 - Alka ha scritto:


    In pratica, TJSONValue e derivati sono una meta-rappresentazione di un valore, o più valori, appartenenti a un “pacchetto JSON”.

    Si utilizzano per incapsulare valori nativi (interi, booleani, ecc.) all'interno di oggetti che ne sono la rappresentazione JSON; tramite poi i metodi forniti da queste classi, puoi produrre il relativo JSON in uscita, oppure ricrearli da un JSON esistente.

    Mi è servito proprio per conservare i valori dei campi.

    23/09/2024 - Alka ha scritto:


    Se può essere utile, ci sono anche librerie di terze parti gratuite e opensource a supporto, che fanno un lavoro decisamente discreto; ad esempio, dai un'occhiata a Neon - JSON Serialization Library for Delphi.

    Come avrò tempo e modo,studierò anche Neon.

    Vedo che è impiegata principalmente in WiRL.

    Se non sbaglio è stata sviluppata da Wintech.

    Grazie ancora!

  • Re: Il problema del doppio backslash nel JSON

    25/09/2024 - GrandfatherCoder ha scritto:


    Se non sbaglio è stata sviluppata da Wintech.

    Sì, tuttavia come progetti open-source ricevono codice da tanti altri contributor, elencati nella pagina GitHub.

Devi accedere o registrarti per scrivere nel forum
8 risposte