2011-01-09 18 views

risposta

19

Si potrebbe provare a utilizzare l'attributo [JsonProperty] per specificare il nome:

[JsonProperty(PropertyName = "$someName")] 
public string SomeName { get; set; } 
1

Gli oggetti con il simbolo del dollaro ($) sono generalmente destinate ad essere di metadati e NOT campi. Quando JSON.NET serializza un oggetto e gli dici di gestire i tipi di oggetto, inserisce gli articoli $ che denotano i metadati per la deserializzazione corretta in seguito.

Se si desidera trattare gli articoli $ come metadati, utilizzare JsonSerializerSettings. Per esempio:

Dim jsonSettings As New Newtonsoft.Json.JsonSerializerSettings With {.TypeNameHandling = Newtonsoft.Json.TypeNameHandling.All} 
Dim jsonOut As String = Newtonsoft.Json.JsonConvert.SerializeObject(objects, jsonSettings) 

Il TypeNameHandling = Newtonsoft.Json.TypeNameHandling.All dice JSON per gestire i tipi di dati mentre si basa sulla $ per informazioni.

Speranza che aiuta ..

4

firas489 era sulla strada giusta che $ indica i metadati, non un campo di dati effettivi. Tuttavia la correzione è in realtà per fare questo:

JsonSerializerSettings settings = new JsonSerializerSettings(); 
settings.MetadataPropertyHandling = MetadataPropertyHandling.Ignore;    

Impostare la gestione di ignorare i metadati, e quindi è possibile serializzare/deserializzare la struttura tramite l'attributo PropertyName:

[JsonProperty("$id")] 
public string Id { get; set; } 
Problemi correlati