6
我有一個類,如下所示:如何在JSON.Net中獲取JsonProperty的名稱?
[JsonObject(MemberSerialization.OptIn)]
public class foo
{
[JsonProperty("name_in_json")]
public string Bar { get; set; }
// etc.
public Dictionary<string, bool> ImageFlags { get; set; }
}
從CSV文件生成的JSON最初,代表Foo對象的每一行 - 它基本上平坦的,所以我需要某些鍵映射到imageflags。
我試着寫一個基於範例here的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());
}