我在将 JSON 对象反序列化为我的对象时遇到了一些问题,我得到了一些可空值来确定属性。
问题:完整的对象可以为空
在这种情况下,我将获得所有对象属性的空值。
json示例:
{
"message": {
"ts": "11/10/13 15:07:16",
"content": "vivo-2482573605"
}
}
发出请求并返回反序列化对象的代码:
public T Request<T>(IEndPoint jsonObject)
{
string endPoint;
string requestType;
endPoint = jsonObject.ToURL();
requestType = jsonObject.RequestType;
string jsonData = jsonObject.Json;
HttpWebRequest request = initRequest(URL + endPoint, requestType);
if (!string.IsNullOrWhiteSpace(jsonData))
{
using (var writeStream = new StreamWriter(request.GetRequestStream()))
{
writeStream.Write(jsonData);
}
}
try
{
var httpResponse = (HttpWebResponse)request.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
string jsonResponse = streamReader.ReadToEnd();
if (!string.IsNullOrWhiteSpace(jsonResponse))
{
T value = Util.DeserializeJsonObject<T>(jsonResponse);
return value;
}
object ret = null;
return (T) ret;
}
}
catch (WebException we)
{
object a = null;
return (T) a;
}
catch (HttpResponseException hre)
{
object a = null;
return (T)a;
}
}
反序列化方法:
public static T DeserializeJsonObject<T>(string json)
{
T deserizadedJson = new JavaScriptSerializer().Deserialize<T>(json);
return deserizadedJson;
}
编辑:
我得到我的对象所有属性都为空,我希望用 JSON 对象中的值填充这个属性。
我的对象:
[DataContract]
class Message
{
[DataMember]
public string ts { get; set; }
[DataMember]
public string content { get; set; }
}