【发布时间】:2021-11-03 09:53:45
【问题描述】:
我正在从网站获取数据,该数据以 string 形式返回给我一个对象,如下所示:
{
index: 1,
commentNumber: 20,
feedComments: {
3465665: {
text: "I do not agree",
likeRatio: 0
},
6169801: {
text: "Hello",
likeRatio: 12
},
7206201: {
text: "Great job!",
likeRatio: 5
}
}
}
我想把它作为一个对象来工作,这很容易做到,我就这样做:
string objectString = GetData(); // Artificial GetData() method
dynamic data = JObject.Parse(objectString);
现在我可以使用 dynamic
轻松地从该对象中获取我想要的所有属性现在问题很明显了,我想获取名称以数字开头的属性(我获取的对象数据结构就是这样设计的)。但是您从对象获得的属性/字段名称不能以数字开头。
int commentNumber = data.commentNumber; // Works fine
string commentText = data.feedComments.3465665.text; // Obviously won't compile
有什么办法吗?
请注意,我想处理我获取的数据,因为它是一个对象,我知道我可以从 GetData() 方法使用一些正则表达式或其他东西返回的字符串中获取注释文本,但这是我想避免的。
【问题讨论】:
-
为什么不把它解析成合适的 C# 对象呢?它让一切变得更容易处理。
-
另外你说的这个数字属性基本上就是一个int的字典键
-
另外知道,每次你使用
dynamic这个类型,你通常是通过创建2个或更多其他问题来解决一个问题 -
每次使用
dynamic,都会有一只小猫死去……