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 方法,这些方法非常简单易用。