2011-01-09 11 views

Respuesta

19

Usted podría tratar de usar el atributo [JsonProperty] para especificar el nombre:

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

Esos elementos con el signo de dólar ($) son generalmente destinados a ser campos de metadatos y NOT. Cuando JSON.NET serializa un objeto y le indica que maneje los tipos de objeto, insertará $ items que denota metadatos para una deserialización correcta más adelante.

Si desea tratar los $ artículos como metadatos, use JsonSerializerSettings. Por ejemplo:

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

El TypeNameHandling = Newtonsoft.Json.TypeNameHandling.All dice JSON para manejar los tipos de datos mientras que confían en el $ para obtener información.

Espero que ayude ..

4

firas489 estaba en el camino correcto que indica $ metadatos, no un campo de datos real. Sin embargo, la solución es en realidad para hacer esto:

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

Ajuste el manejo de hacer caso omiso de los metadatos, y luego se puede serializar/deserializar la propiedad con el atributo PropertyName:

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