que tienen una clase de esta manera:¿Cómo obtengo el nombre de JsonProperty en JSON.Net?
[JsonObject(MemberSerialization.OptIn)]
public class foo
{
[JsonProperty("name_in_json")]
public string Bar { get; set; }
// etc.
public Dictionary<string, bool> ImageFlags { get; set; }
}
Se genera el JSON desde un archivo CSV en un principio, cada línea que representa un objeto foo - es básicamente plana, por lo que tendrá que asignar ciertas claves para imageflags.
Intenté escribir un CustomCreationConverter basado en el ejemplo here.
Esto parece asignar las banderas bien, pero falla al establecer las propiedades normales: busca 'bar' en lugar de 'name_in_json'.
¿Cómo podría obtener el valor 'name_in_json' para un objeto de tipo foo?
edición:
solución actual:
var custAttrs = objectType.GetProperties().Select(p => p.GetCustomAttributes(typeof(JsonPropertyAttribute), true)).ToArray();
var propNames = objectType.GetProperties().Select(p => p.Name.ToLower()).ToArray();
Dictionary<string, string> objProps = new Dictionary<string, string>();
for (int i = 0; i < propNames.Length; i++)
// not every property has json equivalent...
if (0 == custAttrs[i].Length)
{
continue;
}
var attr = custAttrs[i][0] as JsonPropertyAttribute;
objProps.Add(attr.PropertyName.ToLower(), propNames[i].ToLower());
}