我有一个由json mapper函数创建的对象(使用LitJson)。它包含索引属性。
我可以遍历属性并获取每个属性值,如此
for(int i = 0; i < jdata.Count;i++) {
Console.WriteLine(jdata[i]);
}
我想将每个属性名称作为字符串,而不是属性值。
我发现的最接近的是这个 https://stackoverflow.com/questions/1011109/how-do-you-get-the-name-of-the-property
这有效吗
string name = ReflectionUtility.GetPropertyName((Sample2 s) => s.Foo);
但这不是(似乎因为它是一个索引属性?)
string name = ReflectionUtility.GetPropertyName((Sample2 s) => s[0]);
答案 0 :(得分:2)
我发现在访问Keys属性之前必须将JsonData强制转换为IDictionary。
喜欢如此:
JsonData x = getMyData();//however you're getting your JsonData object
var keys = (x as IDictionary).Keys; // you should probably check for null
foreach(string s in keys)
Console.WriteLine("Another key: "+s);
答案 1 :(得分:1)
我找到了source code。看起来JsonData
实现了IDictionary,因此您应该能够访问Keys
属性。
索引器基本上是作为带索引参数的函数实现的,所以没有办法使用反射来得到一个&#34; Name&#34;与给定的指数相关联。