反序列化json字符串后,对象中的空值 [英] Null values in the object after deserializing json string

查看:193
本文介绍了反序列化json字符串后,对象中的空值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,

我正在向我的其他网络服务发出网页请求,我得到一个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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆