获取json对象并将其解析为C#对象

san*_*ons 0 .net c# json json.net

JSON:

[{
    "PersonsTable":[
    {"id":293,"firstname":"jos","lastname":"don"},
    {"id":1861,"firstname":"jef","lastname":"dan"},    
    {"id":1896,"firstname":"janine","lastname":"din"}]
}]
Run Code Online (Sandbox Code Playgroud)

码:

List<Person> persons = new List<Person>();
dynamic dynObj = JsonConvert.DeserializeObject(response);
foreach (var data in dynObj.PersonsTable)
{
     Person p = new Person(data.id, data.firstname, data.lastname);
     persons.Add(p);
}
Run Code Online (Sandbox Code Playgroud)

宾语:

 public class Person
{
    public Person ()
    {

    }
    public Person (string id, string firstname, string lastname)
    {
        this.id= id;
        this.firstname = firstname;
        this.lastname = lastname;
    }
    public string id{ get; set; }
    public string firstname{ get; set; }
    public string lastname{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想将"PersonsTable"下的数据放入人员列表中.我试图用序列化和动态变量实现这一点,但我总是得到一个奇怪的错误"缺少编译器所需的成员,'microsoft.CSharp.RUntimeBinder.CSharpArgumentINfo.Create'"..

NuGet包本身我无法安装,因为我的项目在.Net 3.5中运行(出于某种原因).

有人可以帮助我解决我的问题吗?是否有其他方法可以获得结果中的人员列表?

AFr*_*act 5

你认为你的问题与json解析无关.

当您使用关键字"dynamic"时,您必须在项目中引用Microsoft.CSharp.dll.

请参见此处:C#动态编译和"Microsoft.CSharp.dll"错误

更新:自从我发布回答后,我发现您已更新了问题.你现在说你在.Net 3.5中运行.要清楚,动态在.Net 3.5中是不可用的.例如,请参阅.Net 3.5中的动态关键字的使用.