zoukankan      html  css  js  c++  java
  • C#将json字符串解析成对象

    首先我们在客户端生成json字符串,通过ajax把该字符串传到服务器端
     
    //这是一个以id,email,age的json字符串
      var jdata="[{"id":0,"email":"abccd","age":0},{"id":1,"email":"abc1","age":2}]";
     
    //将这个json字符串,传递到PaperMark.ashx侧处理
     $.post("AJAX/PaperMark.ashx", {
                                jdata: jdata
                              
                            }, function(data, textStatus) {
        });
     
    在PaperMark.ashx我们要引用下面的命名空间
    using System.Web.Script.Serialization;
    using System.Collections.Generic;
     
     string jsonData = context.Request.Form["jdata"];  //取得这个json字符串
     
    //做一个类id,email,age和json格式一致
      public class Person
        {
            public int id { set; get; }
            public String email { set; get; }
            public int age { set; get; }
        }
     
    //这个一个反序列化的方法,用于返回泛型集合
     public static T JSONToObject<T>(string jsonText)
        {
            JavaScriptSerializer jss = new JavaScriptSerializer();
            return jss.Deserialize<T>(jsonText);
        }
    //调用上面这个方法,把json字符串传进去,就得到一个对象集合了
     List<Person> DataReust = JSONToObject<List<Person>>(jsonData);
            for (int i = 0; i < DataReust.Count; i++)
            {
                string j = DataReust[i].email;
            }
     
    注意点:
    json字符串的构造一定要正确。要不然解析不出来。

    为了在js端更为方便的构造出正确的json对象,我做了一些函数用于生成json字符串

                 var jstr = "";
                  var jsData = "[";   //这个就是最后生成的json字符串
                
                  function AddJsonItemStart() {
                      jstr = "";
                  }

                  //vtype==int的时候不加引号

                  function AddJsonItem(name, val, vtype) {

                      if (jstr == "") {
                          //为整型的情况下面
                          if (vtype == "int") {
                              jstr = "{"" + name + "":" + val + ",";
                          }
                          else {
                              //为字符串的情况下面
                              jstr = "{"" + name + "":"" + val + "",";
                          }

                      }
                      else {
                          if (vtype == "int") {
                              jstr = jstr + """ + name + "":" + val + ",";
                          }
                          else {
                              jstr = jstr + """ + name + "":"" + val + "",";
                          }


                      }
                  }

                  function AddJsonItemOK() {
                      jstr = jstr.substring(0, jstr.length - 1) + "},";
                      jsData = jsData + jstr;
                  }

                  function AddJsonEnd() {
                      jsData = jsData.substring(0, jsData.length - 1) + "]";
                  }

               使用方法:

                      AddJsonItemStart();
                      AddJsonItem("id", 1, "int");
                      AddJsonItem("email", "abc", "string");
                      AddJsonItem("age", 5, "int");
                      AddJsonItemOK();

                      AddJsonItemStart();
                      AddJsonItem("id", 2, "int");
                      AddJsonItem("email", "cef", "string");
                      AddJsonItem("age", 6, "int");
                      AddJsonItemOK();
                      AddJsonEnd();

  • 相关阅读:
    redis 缓存验证码 步骤
    方法返回值 前面的<T>是什么?
    spring boot的运行原理
    在本地tomcat中调试Spring boot项目遇到的一些问题
    UEditor中上传图片的步骤
    总结彻底解决Spring MVC+Mybatis中文乱码问题
    ueditor1.4.3二次开发添加自定义Dialog
    UEditor之图片上传如何和真实项目结合
    UEditor之实现配置简单的图片上传示例 (转)
    Java比较运算符
  • 原文地址:https://www.cnblogs.com/soundcode/p/3175252.html
Copyright © 2011-2022 走看看