【发布时间】:2017-12-14 17:48:45
【问题描述】:
我有如下 WCF RESTful 服务声明
[OperationContract]
[WebInvoke(Method = "GET", UriTemplate = "GetJson/{id}", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
EmployeeJSON GetEmployeeJSON(string id);
我从 WCF RESTful 服务获得EmployeeJSON 对象,如下所示
public EmployeeJSON GetEmployeeJSON(string id)
{
List<EmployeeJSON> employees = new List<EmployeeJSON>()
{
new EmployeeJSON() {Name="Sumanth",Id=101,Salary=5000.00 },
new EmployeeJSON() {Name="Ehsan",Id=102,Salary=6000.00 },
};
var Employee = (from x in employees
where x.Id.ToString() == id
select x);
return Employee.FirstOrDefault() as EmployeeJSON;
}
我从客户端调用 WCF RESTful 服务如下
var request = (HttpWebRequest)WebRequest.Create("http://localhost:1249/Service1.svc/GetJson/101");
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream);
string json = reader.ReadToEnd();
我得到json 值如下
{"GetEmployeeJSONResult":{"Id":101,"Name":"Sumanth","Salary":5000}}
现在我正在尝试反序列化上述json,如下所示
JavaScriptSerializer serializer = new JavaScriptSerializer();
Employee responseObject = serializer.Deserialize<Employee>(json);
客户端的Employee类结构如下...
public class Employee
{
public string Name { get; set; }
public int Id { get; set; }
public double Salary { get; set; }
}
但我得到的结果是Id as 0, Name as null and Salary as 0.0
如何反序列化 JSON 对象?
【问题讨论】:
-
您的 JSON 字符串描述了一个具有一个属性的对象:
GetEmployeeJSONResult,它是一个Employee对象:public class tempObject{public Employee GetEmployeeJSONResult{get;set;}}