一尘不染

访问名称中带点的属性

json

我正在尝试反序列化JSON。我的根对象具有单个属性“ en.pickthall”。我正在使用动态类型读取JSON。我以为我可以取消“。”
在属性中,因为它是本地JSON文件,但是必须有某种方法可以访问此类属性

var result = App_Code.FileIOHelper.ReadFromDefaultFile("ms-appx:///Assets/en.pickthall.json");

dynamic stuff = JsonConvert.DeserializeObject(result);

foreach(var x in stuff.(en.pickthall)) //Tried this intellisense didn't like it
{

}

阅读 185

收藏
2020-07-27

共1个答案

一尘不染

C#没有任何引用标识符的方式。如果不是有效的标识符,则唯一的选择就是反射。

但是,您的JSON解串器返回的对象可能会更改了标识符,以使其在C#中可用-
您可能希望枚举所有属性以检查情况是否如此。具有索引器的动态对象也可能是解决方案(例如允许stuff["en.pickthall"])。

另一种选择是更改序列化程序映射属性的方式。例如,Newtonsoft.Jsoft允许您使用进行自定义IContractResolver.以这种方式用C#替代更简单的方法很容易。

2020-07-27