反序列化嵌套的JSON对象并通过它进行预处理

时间:2017-04-20 22:14:12

标签: c# json

我尝试做的是通过该对象反序列化json和foreach并从中获取Name,Lastname,Id值。 我认为反序列化可以起作用,但是我如何能够通过该对象的值来预知并写出来?

ResponseFromServer =

responseFromServer"{\"ReportName\":\"TestReport\",\"Results\":[
{
   \"Name\":\"Test1\",
   \"Lastname\":\"Test2\",
   \"ID\":\"1111111111\",
},{
   \"Name\":\"Test\",
   \"Lastname\":\"Test\",
   \"Id\":\"222222222\"
}
]}" string
到目前为止

代码:

object jsonObj = new System.Web.Script.Serialization.JavaScriptSerializer().DeserializeObject(responseFromServer);

var myObject = jsonObj.GetType().GetProperties();

foreach (var obj in myObject)
{
    Console.WriteLine(obj);
}

3 个答案:

答案 0 :(得分:2)

我建议您为JSON创建一个类,如下所示:

public class Result
{
    public string Name { get; set; }
    public string Lastname { get; set; }
    public string Id { get; set; }
}

public class ResponseClass
{
    public string ReportName { get; set; }
    public List<Result> Results { get; set; }
}

使用此类,您可以转换对象并获取foreach中的属性,如姓氏。

var yourObjectWithStructure = JsonConvert.DeserializeObject<ResponseClass>(responseFromServer,
            new JsonSerializerSettings
                {
                    NullValueHandling = NullValueHandling.Ignore
                });

 foreach (var result in objec.Results)
 {
     var id = result.Id;
     var lastName = result.Lastname;
     var name = result.Name;
 }

更新: 你有&#34; ID&#34;和&#34; Id&#34;在您的JSON响应中。我建议,那&#34; ID&#34;应该是&#34; Id&#34;。是吗?

答案 1 :(得分:0)

我会使用newtonsoft并使用List Property

创建一个具体对象

答案 2 :(得分:0)

如果您下载NewtonSoft框架:

然后你可以为你的回复创建一个类......

(first 1)

您可以直接反序列化到该对象类的列表中,如下所示:

public class Report
{
   public string ReportName {get; set;};
   public string TestReport {get; set;};
   public List<Person> Results {get; set;}
}
public class Person
{
   public string Name {get; set};
   public string LastName {get; set};
   public int ID {get; set;}
}