2016-03-15 9 views
50

Come si dichiara un nome di proprietà o variabile come fg+ in C#?Come aggiungo `+` al nome di una proprietà in C#?

public string fg+ { get; set; } 

sto ottenendo fg+ come un campo in una risposta da JSON come "fg+": "103308076644479658279".

Lo sto deserializzando utilizzando una classe. Come lo leggo da JSON?

+10

@ChrisCirefice: Qualcuno che aspetta i valori a cui accedere con 'obj [" tasto "]' sintassi piuttosto che 'obj.key'. – dan04

+6

@ dan04 Certo, ma se utilizzi una libreria JSON come Google GSON per mappare oggetti JSON in Java o Json.NET per C#, ti troverai in genere un brutto momento con un sacco di strane eccezioni per nessun * apparente * motivo. Sì, le chiavi JSON possono essere stringhe, ma ciò non dovrebbe impedire alla persona che crea il JSON di essere preso in considerazione dal considerare chi deve * analizzare * esso. È meglio evitare simboli speciali per cose che agiscono come * identificatori * secondo me. Non avrei mai creato un JSON così bizzarro a meno che non stavo deliberatamente cercando di far incazzare la gente. –

+0

Ecco le specifiche su cosa è consentito in un nome var: https://msdn.microsoft.com/en-us/library/aa664670.aspx –

risposta

118

Tale nome di variabile non è legale in C#.

Se stai usando Json.NET per deserializzare i dati, è possibile utilizzare l'attributo JsonProperty di dargli un nome personalizzato:

[JsonProperty("fg+")] 
public string Fg { get; set; } 
+5

La tua risposta è corretta..ma penso che il dizionario 'key value pair' lo supporterà in C#. –

+50

@PankajParkar Beh, la sua domanda non era * "come posso deserializzare genericamente il mio JSON in un' Dictionary '" *, voleva sapere come deserializzare * direttamente su una proprietà *. Certo, il primo è possibile. –

Problemi correlati