我尝试做的是通过该对象反序列化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);
}
答案 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;}
}