C#中的JSON; 发送和接收数据
我正在尝试为请求和响应应用程序创建桌面客户端。
我能够轻松地完成GET请求。 但我想知道是否有人可以帮我弄清楚如何做JSON请求和响应。 并将其解析成一个字符串,从那里我可以锻炼如何将它全部切开
Json.net在.net世界中无处不在。
小更新:
作为System.Web或JSON.net的替代品,还有JSONFX和ServiceStack.Text
对于桌面应用程序,下面是一个用于发出JSON请求的解决方案。 可能有一个API在某处已经做到了这一点,但我还没有找到。
桌面应用
‘Test’就是为了certificate传递参数。 在System.Web.Extensions.dll中可以找到JavaScriptSerializer
。
HttpWebRequest request = (HttpWebRequest) HttpWebRequest.Create("http://localhost:2616/Default.aspx/JsonTester"); request.ContentType = "application/json; charset=utf-8"; request.Accept = "application/json, text/javascript, */*"; request.Method = "POST"; using (StreamWriter writer = new StreamWriter(request.GetRequestStream())) { writer.Write("{id : 'test'}"); } WebResponse response = request.GetResponse(); Stream stream = response.GetResponseStream(); string json = ""; using (StreamReader reader = new StreamReader(stream)) { while (!reader.EndOfStream) { json += reader.ReadLine(); } } // 3.5+ adds 'D' to the result, eg // {"d":"{\"Name\":\"bob\",\"Age\":20,\"Foods\":[\"cheeseburger\",\"caviar\"]}"} // So it thinks it's a dictionary with one key/value JavaScriptSerializer serializer = new JavaScriptSerializer(); Dictionary x = (Dictionary)serializer.DeserializeObject(json); MyData data = serializer.Deserialize(x["d"].ToString());
ASP.NET Web应用程序中的Default.aspx:
[WebMethod] public static string JsonTester(string id) { JavaScriptSerializer ser = new JavaScriptSerializer(); var jsonData = new MyData() { Name = "bob", Age = 20, Foods = new List() }; jsonData.Foods.Add("cheeseburger"); jsonData.Foods.Add("caviar"); var result = ser.Serialize(jsonData); return result; }
MyData对象
MyData
出现在Web应用程序和控制台应用程序中,但您希望将其作为域对象放在自己的程序集中,并在两个位置引用它。
public class MyData { public string Name { get; set; } public int Age { get; set; } public IList Foods { get; set; } }
查看System.Web.Extensions.dll程序集中的System.Web.Script.Serialization.JavaScriptSerializer类。
它包含Serialize和Deserialize