Code Bye

json字符串反序列化

这是调用某宝接口返回的json字符串:
{"tmall_msf_identify_status_query_response":{"result":"{errorMessage=服务类型不对, gmtCurrentTime=1469153603575, errorCode=352, class=com.tmall.msf.common.dto.Result, object=null, success=false, costTime=null}","request_id":"3jvhmoxlvkco"}}

本人试图用newtonjson的DeserializeObject方法,将其反序列化成.net对像,为此本人建立了两个类

 public  class result
        {
            public string errorMessage { get; set; }
            public long gmtCurrentTime { get; set; }
            public int errorCode { get; set; }
            public string @class { get; set; }
            public object @object { get; set; }
            public bool success { get; set; }
            public object costTime { get; set; }
        }
        public  class tmall_msf_identify_status_query_response
        {
            public result result { get; set; }
            public string request_id { get; set; }
        }

但发现反序列化后得到的obj总是null值

 tmall_msf_identify_status_query_response obj = JsonConvert.DeserializeObject<tmall_msf_identify_status_query_response>(json);

本人该怎么样反序列化才能得到正确的结果?

解决方案

20

通过VS2013功能“将Json粘贴为类”结果是这样的
public class Rootobject
{
    public Tmall_Msf_Identify_Status_Query_Response tmall_msf_identify_status_query_response { get; set; }
}
public class Tmall_Msf_Identify_Status_Query_Response
{
    public string result { get; set; }
    public string request_id { get; set; }
}

你会发现result后边的是在双引号里面的,引号里面的都是result的值

40

            var s = File.ReadAllText("d5.txt", Encoding.Default);
            var a = JObject.Parse(s);
            foreach (var x in (JObject)a["tmall_msf_identify_status_query_response"])
            {
                Console.WriteLine("{0} : {1}", x.Key, x.Value);
                if (x.Key == "result")
                {
                    //这样转成 json 串
                    var t = Regex.Replace(x.Value.ToString(), "=([^,}]+)", ":"$1""); 
                    
                    foreach (var y in JObject.Parse(t))
                    {
                        Console.WriteLine("{0} : {1}", y.Key, y.Value);
                    }
                }
            }


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明json字符串反序列化