2011-01-09 10 views

Antwort

19

Sie könnten versuchen, das [JsonProperty] Attribut mit dem Namen angeben:

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

Diese Elemente mit dem Dollarzeichen ($) sind in der Regel bedeutet, Metadaten und NICHT Felder zu sein. Wenn JSON.NET ein Objekt serialisiert und Sie ihm mitteilen, dass es die Objekttypen behandeln soll, fügt es $ -Elemente ein, die später Metadaten für die korrekte Deserialisierung angeben.

Wenn Sie die $ -Elemente als Metadaten behandeln möchten, verwenden Sie JsonSerializerSettings. Zum Beispiel:

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

Das TypeNameHandling = Newtonsoft.Json.TypeNameHandling.All sagt JSON die Datentypen, während unter Berufung auf dem $ für Informationen zu handhaben.

Hoffnung, dass ..

4

firas489 war auf dem richtigen Weg hilft, dass $ Metadaten anzeigt, nicht ein tatsächliches Datenfeld. Allerdings ist das Update tatsächlich, dies zu tun:

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

die Metadaten Set, zu ignorieren Handhabung und dann können Sie serialisieren/deserialisieren die Eigenschaft mit dem Property Attribute:

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