问题描述
一个Model[Serializable]publicclassActLog{privateint_logid=0;privatestring_logcontent="";privateint_userid=0;privatestring_usertype="";privateDateTime_addtime=DateTime.Now;publicintlogid{get{return_logid;}set{_logid=value;}}publicstringlogcontent{get{return_logcontent;}set{_logcontent=value;}}publicintuserid{get{return_userid;}set{_userid=value;}}publicstringusertype{get{return_usertype;}set{_usertype=value;}}publicDateTimeaddtime{get{return_addtime;}set{_addtime=value;}}}
用以下代码操作时出错publicstringtest(stringjsondata){Model.ActLoguserInfo=JSON.parse<Model.ActLog>(jsondata);//logmodeluserInfo=JSON.parse<logmodel>(jsondata);returnuserInfo.logcontent;}
JSON.parse方法是:publicstaticTparse<T>(stringjsonString){Tresult;using(System.IO.MemoryStreammemoryStream=newSystem.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(jsonString))){result=(T)((object)newDataContractJsonSerializer(typeof(T)).ReadObject(memoryStream));}returnresult;}
出错提示为:提交的测试数据是a_user.a_UserSoapClienta1=newa_user.a_UserSoapClient();stringjson="{";json=json+""logid":"0"";json=json+","logcontent":""+TextBox1.Text+""";json=json+","userid":"1"";json=json+","usertype":"用户类型"";//json=json+","addtime":"2014-12-1200:00:00"";json=json+"}";Response.Write(a1.test(json));
==========================请教这要如何解决?另外,如果我把Model改下以下形式,则正常执行:publicclassActLog{publicintlogid{get;set;}publicstringlogcontent{get;set;}publicintuserid{get;set;}publicstringusertype{get;set;}publicDateTimeaddtime{get;set;}}
这又是为什么?
解决方案
解决方案二:
你先反过来试下上面的用一个model去序列化为字符串呢,看字段有没有被序列化
解决方案三:
试试Model.ActLoguserInfo=fastCSharp.emit.jsonParser.Parse<Model.ActLog>(jsondata);
解决方案四:
首先推荐微软mvc都使用的类库:Newtonsoft.Json.5.0.6当然这是次要的主要的是stringjson="{";json=json+""logid":"0"";json=json+","logcontent":""+TextBox1.Text+""";json=json+","userid":"1"";json=json+","usertype":"用户类型"";//json=json+","addtime":"2014-12-你这些最好不要自己拼接自己定义一个类序列化成json好过自己拼接