反序列化json字符串后,对象中的空值 [英] Null values in the object after deserializing json string
问题描述
大家好,
我正在向我的其他网络服务发出网页请求,我得到一个json格式的响应。但是在我获取值后反序列化我得到一个空值。
I am making a web request to my rest web service and I get a response which is in json format.But after deserializing when I fetch the values I get a null value.
我的代码如下:
jsonstext 是 {" metaDataItems": [{"标识":" CAR1","显示名":" A","超时":10000},{"标识":" CAR2","显示名":" B" ,"超时":10000},{"标识":"的Car3","显示名":" C","超时":10000},{"标识":"出租车"," ; displayName":" Taxi"," timeout":10000}]}
jsonstext is {"metaDataItems":[{"Id":"car1","displayName":"A","timeout":10000},{"Id":"car2","displayName":"B","timeout":10000},{"Id":"car3","displayName":"C","timeout":10000},{"Id":"taxi","displayName":"Taxi","timeout":10000}]}
try {
WebRequest req =(WebRequest)ar.AsyncState;
WebRequest req = (WebRequest) ar.AsyncState;
WebResponse response = req.EndGetResponse(ar);
                 使用(StreamReader httpwebStreamReader = new StreamReader(response.GetResponseStream())))
                  {
                      string results = httpwebStreamReader.ReadToEnd(); //结果包含
json 文字                                                                
                                                    上面提到
WebResponse response = req.EndGetResponse(ar);
using (StreamReader httpwebStreamReader = new StreamReader(response.GetResponseStream()))
{
string results = httpwebStreamReader.ReadToEnd(); //results contains
json text
mentioned above
var serializer = new DataContractJsonSerializer(typeof( Meta ));
var serializer = new DataContractJsonSerializer(typeof(Meta));
使用(MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(results ))))
{
serializer.ReadObject(ms);
跨度>      Meta obj =( Meta )serializer.ReadObject(ms); // obj具有空值
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(results )))
{
serializer.ReadObject(ms);
Meta obj = (Meta)serializer.ReadObject(ms);//obj has null value
           
    }
}
}
}
catch(Exception ex){}
catch(Exception ex){}
,课程为:
公共课MetaData
      {
$
         私人字符串mspId;
         公共字符串MspId
          {
             得到{return mspId; }¥b $ b              设置{mspId = value; }¥b $ b           }¥b $ b          私人字符串displayName;
         公共字符串显示名称
          {
              get {return displayName; }¥b $ b              设置{displayName = value; }¥b $ b           }¥b $ b           private longoutOut;
         公共长TimeOut
          {
             得到{return timeOut; }¥b $ b              设置{timeOut = value; }¥b $ b           }¥b $ b       }
public class MetaData
{
private string mspId;
public string MspId
{
get { return mspId; }
set { mspId = value; }
}
private string displayName;
public string DisplayName
{
get { return displayName; }
set { displayName = value; }
}
private long timeOut;
public long TimeOut
{
get { return timeOut; }
set { timeOut = value; }
}
}
我不知道我哪里错了。请帮助:(
I dont know where am I going wrong.Please help :(
提前致谢。
推荐答案
您的模型类不正确。
Your model classes are incorrect.
public class MetaData
{
public string Id { get; set; }
public string displayName { get; set; }
public int timeout { get; set; }
}
[DataContract]
public class Meta
{
[DataMember(Name="metaDataItems")]
public List<MetaData> MetaDatas { get; set; }
}
这篇关于反序列化json字符串后,对象中的空值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!