我有这样的课:
[JsonObject(MemberSerialization.OptIn)]
public class foo
{
[JsonProperty("name_in_json")]
public string Bar { get; set; }
// etc.
public Dictionary<string, bool> ImageFlags { get; set; }
}
JSON 最初是从 CSV 文件生成的,每一行代表一个 foo 对象 - 它基本上是平的,所以我需要将某些键映射到 imageflags。
我尝试根据此处的示例编写一个 CustomCreationConverter 。
这似乎很好地映射了标志,但它无法设置正常属性 - 它寻找“bar”而不是“name_in_json”。
我将如何为 foo 类型的对象获取“name_in_json”值?
编辑:
当前解决方案:
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());
}