我的客户向我发送了一个这样的对象:
(batch_size, features)
我需要将"content": {
"title": "data title",
"values": {
"25": "some description",
"26": "some info",
"27": "some text",
"28": "some other data",
"29": "more info",
"30": "more text",
"31": "and another more description"
}
}
保存在C#values
对象上。
我试图获取并保存这些值:
List<>
但是在public static List<MyKeyValuePair> GetClientValues(dynamic content)
{
var myList = new List<MyKeyValuePair>();
try
{
foreach (PropertyInfo pi in content.values.GetType().GetProperties())
{
var value = "";
myList.Add(new MyKeyValuePair() { Id = int.Parse(pi.Name), Description = pi.GetValue(value, null).ToString() });
}
}
catch { }
return myList;
}
行,我收到此错误消息:
&#39; System.Collections.Generic.Dictionary.values&#39;是 由于其保护级别无法访问
我该如何解决这个问题?
答案 0 :(得分:3)
如果已经输入了动态,您应该能够执行以下操作:
public static List<MyKeyValuePair> GetClientValues(dynamic content)
{
var myList = new List<MyKeyValuePair>();
foreach (var kv in content["values"])
{
myList.Add(new MyKeyValuePair {
Id = int.Parse(kv.Key),
Description = kv.Value
});
}
return myList;
}
否则,您可能需要反序列化输入的json字符串。
答案 1 :(得分:0)
如果您正在使用visual studio 2013及更高版本,则使用编辑菜单下的粘贴json作为类复制此json并生成一个类,但是如果您使用较低版本的VS,您仍然可以输入类结构,然后下一步将使用newtonsoft json将json反序列化为上面创建的类。