经过长时间搜索良好的JSON
库后,我发现Newtownsoft.json
,所以我开始使用它来解码从Web请求获取的json文本,我不知道是否JSON是被正确C#访问json解码后的对象属性
解码类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//Request library
using System.Net;
using System.IO;
using Newtonsoft.Json;
namespace TestApplication
{
class Connect
{
public string id;
public string type;
private string api = "https://api.stackexchange.com/2.2/";
private string options = "?order=desc&sort=name&site=stackoverflow";
public object request()
{
string totalUrl = this.join(id);
string json = this.HttpGet(totalUrl);
return this.decodeJson(json);
}
private string join(string s)
{
return api + type + "/" + s + options;
}
private string HttpGet(string URI)
{
string html = string.Empty;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URI);
request.AutomaticDecompression = DecompressionMethods.GZip;
request.ContentType = "application/json; charset=utf-8";
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
html = reader.ReadToEnd();
}
return html;
}
private object decodeJson(string json)
{
object js = JsonConvert.DeserializeObject(json);
return js;
}
}
}
类对象正在从形式,以这种方式访问:
Connect rq = new
rq.id = usernameText.Text;
rq.type = "users";
Debug.WriteLine(rq.request());
我不知道为什么我不能做rq.request().items
或rq.request()["items"]
,我仍然在学习c#,我想知道如何以正确的方式访问json对象成员。
注:这是国内第一款桌面程序我发展,我是一个PHP /开发商的NodeJS,我想使将要连接到堆栈Exchange数据库和检索用户的信息的应用程序。
http://stackoverflow.com/questions/2546138/deserializing-json-data-to-c-sharp-using-json-net – 2014-11-24 20:17:02