[英]How to Deserialize json Object on gridview?
I am building C# windows form that accessing json data.我正在构建访问 json 数据的 C# windows 窗体。 I want to make it display on gridview.
我想让它显示在 gridview 上。
How can I DeserializeObject
the json data on gridview?如何
DeserializeObject
gridview 上的 json 数据? Sorry for newbie here.对不起,这里的新手。
public class Namedata
{
public string PeopleName { get; set; }
public string PeopleAge { get; set; }
public string PeopleSurname { get; set; }
}
public class SName
{
public int ResultCode { get; set; }
public string ResultName { get; set; }
public IList<Namedata> namedatas { get; set; }
}
public class Example
{
public SName s_name { get; set; }
}
public void GETJsondata()
{
string username = "myuser";
string password = "myuserpass";
byte[] byteArray = Encoding.UTF8.GetBytes("{\"name\":\"" + Name.Text + "\",\"id\":\"1\"}");
WebRequest request = WebRequest.Create("http://myservice/Service4.svc/s_name");
request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(Encoding.GetEncoding("ISO-8859-1").GetBytes(username + ":" + password)));
request.Method = "POST";
request.ContentType = "application/json";
request.ContentLength = byteArray.Length;
Stream stream = request.GetRequestStream();
stream.Write(byteArray, 0, byteArray.Length);
stream = request.GetResponse().GetResponseStream();
var result = (new StreamReader(stream).ReadLine());
JsonConvert.DeserializeObject<Example>(result);
ultragridiew1.DataSource = result;
}
here are json data:这是json数据:
{
"s_name": {
"ResultCode": 1,
"ResultName": "Found",
"namedatas": [
{
"PeopleName": "Jane",
"PeopleAge": "20",
"PeopleSurname": "Jade"
},
{
"PeopleName": "Newton",
"PeopleAge": "18",
"PeopleSurname": "Handy"
},
{
"PeopleName": "Java",
"PeopleAge": "21",
"PeopleSurname": "Handy"
}
]
}
}
You are not giving the gridview the correct source.您没有为 gridview 提供正确的来源。 Try this,
尝试这个,
var data = JsonConvert.DeserializeObject<Example>(result);
ultragridiew1.DataSource = data.s_name.namedatas;
Base on the information, here is a potential solution:根据信息,这是一个潜在的解决方案:
public class Namedata { public string PeopleName { get; set; } public string PeopleAge { get; set; } public string PeopleSurname { get; set; } } public class SName { public int ResultCode { get; set; } public string ResultName { get; set; } public Namedata[] namedatas { get; set; } } public class Example { public SName s_name { get; set; } } public void GETJsondata() { HttpClient _client = new HttpClient(); string username = "myuser"; string password = "myuserpass"; var byteArray = System.Text.Encoding.ASCII.GetBytes($"{username}:{password}"); _client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray)); dynamic content = new ExpandoObject(); content.name = Name.Text; content.id = 1; var json = Newtonsoft.Json.JsonConvert.SerializeObject(content); var data = new StringContent(json, System.Text.Encoding.UTF8, "application/json"); var response = _client.PostAsync("http://myservice/Service4.svc/s_name", data).Result; var result = Newtonsoft.Json.JsonConvert.DeserializeObject<Example>(response.Content.ReadAsStringAsync().Result); ultragridiew1.DataSource = data.s_name.namedatas; }
Main change I have done is to use HttpClient.我所做的主要更改是使用 HttpClient。 It removes a lot of boilerplate code that is required with webrequest.
它删除了 webrequest 所需的大量样板代码。
@Chetan Ranpariya had correct me. @Chetan Ranpariya 纠正了我。 Thank you
谢谢
public class Namedata
{
public string PeopleName { get; set; }
public string PeopleAge { get; set; }
public string PeopleSurname { get; set; }
}
public class SName
{
public int ResultCode { get; set; }
public string ResultName { get; set; }
public IList<Namedata> namedatas { get; set; }
}
public class Example
{
public SName s_name { get; set; }
}
public void GETJsondata()
{
string username = "myuser";
string password = "myuserpass";
byte[] byteArray = Encoding.UTF8.GetBytes("{\"name\":\"" + Name.Text + "\",\"id\":\"1\"}");
WebRequest request = WebRequest.Create("http://myservice/Service4.svc/s_name");
request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(Encoding.GetEncoding("ISO-8859-1").GetBytes(username + ":" + password)));
request.Method = "POST";
request.ContentType = "application/json";
request.ContentLength = byteArray.Length;
Stream stream = request.GetRequestStream();
stream.Write(byteArray, 0, byteArray.Length);
stream = request.GetResponse().GetResponseStream();
var result = (new StreamReader(stream).ReadLine());
var exampleObj = JsonConvert.DeserializeObject<Example>(result);
ultragridiew1.DataSource = exampleObj.s_name.namedatas
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.