我正在尝试反序列化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 { }
C#没有任何引用标识符的方式。如果不是有效的标识符,则唯一的选择就是反射。
但是,您的JSON解串器返回的对象可能会更改了标识符,以使其在C#中可用- 您可能希望枚举所有属性以检查情况是否如此。具有索引器的动态对象也可能是解决方案(例如允许stuff["en.pickthall"])。
stuff["en.pickthall"]
另一种选择是更改序列化程序映射属性的方式。例如,Newtonsoft.Jsoft允许您使用进行自定义IContractResolver。.以这种方式用C#替代更简单的方法很容易。
IContractResolver
.