我难以编写适当的注释来表示从JSON Get请求返回的数据,该请求返回如下数据:
mapping = {
r"\bgoodbye\b": ['Goodbye Sir', 'Jarvis powering off in 3, 2, 1, 0'],
r"\bhello\b": ['Wellcome to Jarvis virtual intelligence project. At your service sir.'],
...}
for regex, rand in mapping.items():
if re.search(message, flags=re.I):
break
else:
raise NotImplementedError("What to do?")
speekmodule.speek(rand, n, mixer)
(上面的省略号表示我可以返回可变数量的这些项目)
在我的模型类中(我使用MVVM方法进行Xamarin项目,但这里并没有过多相关)我使用注释来表示模型属性
[{"ProductCode":"0129923083091","Description":"DIESEL ","SalesLitres":6058.7347,"SalesValue":6416.2000},{"ProductCode":"0134039344902","Description":"UNLEADED ","SalesLitres":3489.8111,"SalesValue":3695.7100},
...
]
我想创建另一个显示容器/包含关系的类。但是,由于在注释中没有提供JSON属性来表示返回集合的“根”,因此我会失败。
对于在返回的JSON中命名的任何JSON数组,我将JSON映射到对象模型没有问题。在这种情况下,我可以使用包含C#List的命名JSON属性创建另一个类,但我正在尝试为JSON提供适当的模型映射,该映射返回未命名数组中的项列表。
我有什么想法可以解决这个问题吗?
答案 0 :(得分:4)
要反序列化该JSON,请使用:
JsonConvert.DeserializeObject<List<ReportRow>>(json)
(或您希望的任何变体,此处的关键是要求反序列化ICollection
ReportRow
。它可能是您自己的实现ICollection
或任何内置函数的类< / p>
同样的想法遵循JsonTextReader
或其他任何反序列化JSON.NET提供的方法。只需使用ICollection<YourType>
作为目标类型。