365体育网站Json将复杂对象种类化为叁个字符串,大概持续一种等级次序的数量

 

AJAX传递复杂数据要是和睦进行格式定义的话会经历组装、剖析的进度,由此AJAX中有贰个实在
的数码传输规范JSon。 
Json将复杂对象种类化为贰个字符串,在浏览器端再将字符串反序列化为JavaScript能够读取的指标。
看一下Json的格式。Json被差不离具有语言协理。 
C#元帅.Net对象系列化为Json字符串的主意: 
JavaScriptSerializer().Serialize(p),JavaScriptSerializer在System.Web.Extensions.dll中,
是.Net3.x 中新添的类,即使在 .Net2.0中则供给用第三方的机件。 
JQuery AJAX拿到的data是Json格式数据,用
$.parseJSON(data)方法将JSon格式数据剖判为JavaScript对象 
可以在post函数
后二个函数字传送递”json”则data正是反体系化未来的对象,免去了parseJSON

 第一种方法本人用的是JavaScriptSerializer 。

案例:用Json将类再次回到给客户端,使用JQurey
1.管理页设置 Json1.ashx

不过回去的字符串或者比较复杂,大概不断一种档期的顺序的多少。

public void ProcessRequest(HttpContext context)
    {
       context.Response.ContentType = "text/plain";
       JavaScriptSerializer jss = new JavaScriptSerializer();    //创建 JavaScriptSerializer
       string  json = jss.Serialize(new person(){Name="xgao",Age=18 });
       context.Response.Write(json);
    }

    public class person
    {
       public string Name { get; set; }
       public int Age { get; set; }
    }
{
    "resultCode": "0",
    "resultMsg": "查询成功!",
    "resultData": {
        "classinfo": [
            {
                "classNo": "101",
                "className": "小A"

            },
            {
                "classNo": "101",
                "className": "小B"
            },

        ],
        "otherinfo": [
            {
                "otherNo": "1111",
                "otherType": "A"            
            },
            {

                "otherNo": "222",
                "otherType": "b",
            }
         ]
    }
}

 

 1             //第一次解析
 2             Dictionary<string, object> dic = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>>(json);
 3             //获取具体数据部分
 4             object obj = dic["resultData"];
 5             //将数据部分再次转换为json字符串
 6             string jsondata =  Newtonsoft.Json.JsonConvert.SerializeObject(obj);
 7             //获取数据中的  不同类型的数据   
 8             Dictionary<string, object> dicc = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>>(jsondata);
 9 
10             //chalssinfo 
11             object objclass = dicc["classinfo"];
12             string jsonclass = Newtonsoft.Json.JsonConvert.SerializeObject(objclass);
13             DataTable tclass = Newtonsoft.Json.JsonConvert.DeserializeObject<DataTable>(jsonclass);
14             //otherinfo 
15             object objother = dicc["otherinfo"];
16             string jsonother = Newtonsoft.Json.JsonConvert.SerializeObject(objother);
17             DataTable tother = Newtonsoft.Json.JsonConvert.DeserializeObject<DataTable>(jsonother);
18 
19 
20            // tclass 和  tother 里面分别存放 classinfo和otherinfo  然后可以操作datatale 或者转成list也行
21  

2.JAVAscript设置

什么深入分析呢剔除其余音讯只取得具体数据吧?

    <script type="text/javascript">
        $(function() {
            $.post("Json1.ashx", function(data, state) {
                if (state == "success") {
                    var person = $.parseJSON(data);    //利用parseJSON进行转换
                    alert(person.Name);
                    alert(person.Age);
                }
            });
        });
    </script>
 1     [Serializable]
 2     [DataContract]
 3     public class result_Msg
 4     {
 5         /// <summary>
 6         /// code
 7         /// </summary>
 8         [DataMember(IsRequired = false)]
 9         public string resultCode { get; set; }
10         /// <summary>
11         /// msg
12         /// </summary>
13         [DataMember(IsRequired = false)]
14         public string resultMsg { get; set; }
15         /// <summary>
16         /// 数据集合
17         /// </summary>
18         [DataMember(IsRequired = false)]
19         public resultData resultData { get; set; }
20     }

1  [Serializable]
2     public class resultData
3     {
4         public List<classinfo> classinfo{ get; set; }
5         public List<otherinfo> otherinfo{ get; set; }
6       
7     }

ps:使用JavaScriptSerializer 或者 Json.Net 都可以

主意一: 直接依据json的格式构建对象就足以直接分析了

 方法二
:先分析成字典,获取到多少未来再也转移成json然后解析,思路是那一个思路,如若遇上别的越发千头万绪的json也足以
根据那个思路去剖判

 如若还会有别的的点子请告诉 多谢!!

1  
2                     if (result.resultData.classinfo!= null && result.resultData.classinfo.Count > 0)
3                     {
4                       List<classinfo>  classinfos= result.resultData.classinfo;
5                     }

那般有着的回到数据就改成贰个对象。

 第二种办法用的是 Json.Net
不过急需在NuGET里面加多该服务(推荐)大概上网下载dll文件引进。

  JavaScriptSerializer jss = new JavaScriptSerializer();
 result_Msg result = jss.Deserialize<result_Msg>(json);

 

在接口开荒的进度中日常通过接口获取数据重临是json格式字符串。

例如:

相关文章