将带有列表的JS对象转换为C#列表

时间:2017-08-16 17:08:20

标签: javascript c# json parsing dynamic

我的客户向我发送了一个这样的对象:

(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;是   由于其保护级别无法访问

我该如何解决这个问题?

2 个答案:

答案 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反序列化为上面创建的类。