我有一个JSON容器,它有一个名为“48x48”的奇怪字段,用于photoUrl。
using Newtonsoft.Json;
(...)
dynamic issuesJson = JsonConvert.DeserializeObject(responseIssues.Content);
foreach (dynamic issue in issuesJson.issues){
Console.WriteLine(issue.name); //works properly
Console.WriteLine(issue.48x48); //error -> expected;
}
由于某种原因,Visual Studio不接受对此动态对象的此运行时字段的访问。我该如何解决这个问题? 注意:我无法更改字段名称。
非常感谢。
答案 0 :(得分:3)
由于某些原因,Visual Studio不接受对此动态对象的此运行时字段的访问。
您提供的内容根本就不是C#。标识符不能以数字开头。即使您正在尝试解析dynamic
的成员,该问题仍然有效。
我们不知道您为issues
使用的类型,但基本上您需要将其作为键/值映射处理,您可以通过字符串访问它。你如何做到这一点将取决于issue
的实施。看起来Json.NET不保证任何东西 - 你可能能够将它投射到JObject
,例如:
foreach (JObject issue in issuesJson.issues) {
Console.WriteLine(issue["48x48"]);
}
答案 1 :(得分:0)
字段名称不能以数字开头。对不起,没办法了。
您必须查阅解串器的文档,了解它如何处理此类案例。 可能就像重命名字段一样简单" _48x48"。
答案 2 :(得分:0)
编辑:实际上,根据您的代码,您可能没有表示此JSON对象的类;无论如何我都会留下我的答案,以防它帮助别人。
正如其他人所提到的,C#标识符不能以数字开头。您只需要将48x48
重命名为类中的有效名称,并使用[JsonProperty]
属性将其映射到实际的JSON名称:
[JsonProperty("48x48")]
public string _48x48 { get; set; }