1

我有一个由 json 映射器函数(使用 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]);
4

2 回答 2

2

我发现我必须先将 JsonData 转换为 IDictionary,然后才能访问 Keys 属性。

像这样:

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);
于 2013-01-24T22:30:56.723 回答
1

我找到了源代码。看起来像JsonData实现了 IDictionary,所以您应该能够访问该Keys属性。

索引器基本上是作为带有索引参数的函数实现的,因此无法使用反射来获取与给定索引关联的“名称”。

于 2012-06-13T02:43:34.667 回答