JObject.Parse (jsonString) causa problemi ai dati booleani. per esempio. Il JSON è:Problema di parsing booleano Json.Net
{
"BoolParam": true
}
ho usato il seguente codice per analizzare:
JObject data = JObject.Parse(str1);
foreach (var x in data)
{
string name = x.Key;
Console.Write(name + " (");
JToken value = x.Value;
Console.Write(value.Type + ")\n");
Console.WriteLine(value);
}
Questa stampa il valore come: BoolParam (booleano): veri
Il caso cause di sensibilità problema come ho salvato questo json per un uso successivo. JSON salvato sembra
{
"BoolParam": True
}
Tuttavia, quando più tardi lo uso, il JObject.Parse (str) throws errore come non valida JSON: carattere imprevisto rilevato durante l'analisi di valore: T. Path 'BoolParam', linea 2, posizione 15.
Se cambio il caso da "True" a "true", funziona. Non voglio aggiungere questo trucco per cambiare il caso al momento del salvataggio, ma c'è un modo migliore per gestire questo scenario.
Capisco che avrei dovuto salvare un json valido. La cosa che causa il problema è quando analizzo il valore come "Vero", ma una stringa Json valida si aspetta "true". Quindi, chiedendosi c'è un modo per analizzarlo come "vero" – surya
@surya Se il tuo JSON contiene 'True', allora non è JSON valido; E 'così semplice. Il token 'true' DEVE essere tutto in minuscolo. Vedi la sezione 2.1 della [specifica JSON] (http://www.ietf.org/rfc/rfc4627.txt?number=4627). Come ha detto Darin, è necessario correggere il modo in cui si salva il JSON se si prevede che un parser possa leggerlo correttamente. –
Ho aggiunto la correzione ma penso di non aver spiegato prima .. Non sono io a chi sta cambiando il valore booleano su "True" ma con parser Json.net. per essere precisi questa riga restituisce "True" per il valore booleano: JToken value = x.Value; string val = (value.ToString()); Il json è {"Bool": "true"} – surya