如何将json转换为object并获取数据循环

时间:2017-04-23 21:07:04

标签: asp.net json c#-4.0

我跟随json ..我将我的json转换为objectclass并获得subjectid和class id循环,但它不起作用。我想要subjectid和classid请帮助我怎么做。我是c的新人#请帮助我我非常感谢你们

[{
    "teacherid": 1,
    "teachername": "Addi Teacher",
    "class": {      
        "class_id": 2,      
        "class_name": "Class 9"
    },
    "subjecname": {

        "subject_id": 2,        
        "Subject_Name": "chemistry"
    },
    "$$hashKey": "object:10"
}, {
    "teacherid": 1,
    "teachername": "Addi Teacher",
    "class": {      
        "class_id": 2,      
        "class_name": "Class 9"
    },
    "subjecname": { 
        "subject_id": 4,        
        "Subject_Name": "Science"
    },
    "$$hashKey": "object:12"
}, {
    "teacherid": 1,
    "teachername": "Addi Teacher",
    "class": {

        "class_id": 2,      
        "class_name": "Class 9"
    },
    "subjecname": {

        "subject_id": 3,        
        "Subject_Name": "P.Study"
    },
    "$$hashKey": "object:14"
}]


//c# class
public class Class
{
    public int class_id { get; set; }
    public string class_name { get; set; }
}

public class Subjecname
{
    public int subject_id { get; set; }
    public string Subject_Name { get; set; }
}

public class RootObject
{
    public int teacherid { get; set; }
    public string teachername { get; set; }
    public Class @class { get; set; }
    public Subjecname subjecname { get; set; }
    public string __invalid_name__$$hashKey { get; set; }
}

// code
  subjectobject objsub = new JavaScriptSerializer().Deserialize<subjectobject>(jsonstring);

enter image description here

1 个答案:

答案 0 :(得分:0)

执行以下步骤以实现您的需求:

  1. 使用我的答案here为您的JSON生成C#类。您手动创建的那个不能准确反映您的JSON。
  2. 使用NewtonSoft NuGet包从json反序列化为C#type
  3. 然后使用Linq或循环获取所需的属性。
  4. 以下是您的代码:

    var obj = JsonConvert.DeserializeObject<Rootobject>("your json");
    var result = obj.Property1.Select(x => 
        new { ClassId = x._class.class_id, SubjectId = x.subjecname.subject_id });
    

    顺便说一下,这就是我的链接答案将为您生成的内容:

    public class Rootobject
    {
        public Class1[] Property1 { get; set; }
    }
    
    public class Class1
    {
        public int teacherid { get; set; }
        public string teachername { get; set; }
        public Class2 _class { get; set; }
        public Subjecname subjecname { get; set; }
        public string hashKey { get; set; }
    }
    
    public class Class2
    {
        public int class_id { get; set; }
        public string class_name { get; set; }
    }
    
    public class Subjecname
    {
        public int subject_id { get; set; }
        public string Subject_Name { get; set; }
    }