首先我们在客户端生成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();

C#将json字符串解析成对象的更多相关文章

  1. VBScript把json字符串解析成json对象的2个方法

    这篇文章主要介绍了VBScript把json字符串解析成json对象的2个方法,本文通过MSScriptControl.ScriptControl和jscript实现,需要的朋友可以参考下 asp/v ...

  2. java操作JSON字符串转换成对象的时候如何可以不建立实体类也能获取数据

    引入依赖 <dependency>    <groupId>com.alibaba</groupId>    <artifactId>fastjson& ...

  3. json 字符串转换成对象,对象转换成json字符串

    json   字符串转换成对象,对象转换成json字符串 前端: 方法一: parseJSON方法:   [注意jquery版本问题] var str = '{"name":&qu ...

  4. .net 4中使用 dynamic,将json字符串转成对象的 万能方法。

    在.net 4中增加了对弱类型的支持.为和弱类型的对象进行数据交换提供了方法.我们常常会遇到将json字符串转成对象的情景,虽然可以使用 JavaScriptSerializer 或者 DataCon ...

  5. JSON字符串转换成对象时候 需要有默认构造器 因为这是通过反射创建的 反射是先通过默认构造器创建对象的

    JSON字符串转换成对象时候 需要有默认构造器 因为这是通过反射创建的 反射是先通过默认构造器创建对象的

  6. JSON字符串解析成JSON数据格式

    在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 使用eval函数来解析,并且使用jquery的ea ...

  7. json字符串转换成对象需要注意的问题

    json转换成对象的时候应该尽量避免出现特殊的符号,如“\”这样的字符在转义成数组的时候会被去除掉,最好的例子就是后台返回的内容为存储路径的JSON,这时候最好是把一个斜杠变为两个斜杠,如: [{&q ...

  8. C#中,JSON字符串转换成对象。

    在前台提交(post)的数据中.除了强类型的数据外,还有一个额外的json数据提交 在这里我的办法是,在前台把json对象转换成字符串,然后提交. 测试demo 前台: @using(Html.Beg ...

  9. XML字符串解析成对象的时候应注意空格

    BomList bomList=(BomList)unmarshaller_bom.unmarshal(new StringReader(xml));xml 不能以空格开头

随机推荐

  1. jquery序列化表单

    没有使用其他的东西 , 数据传送是最基本的. 前台: var info = $('#dataForm').serialize() ; alert(decodeURIComponent(info,tru ...

  2. HDU1878 欧拉回路---(并查集+图论性质)

    http://acm.hdu.edu.cn/showproblem.php?pid=1878 欧拉回路 Time Limit: 2000/1000 MS (Java/Others)    Memory ...

  3. LABVIEW伺服电机测试平台

    遇见的关键问题总结: 怎么发脉冲:(1)保持电平一段时间进行翻转(2)仿真脉冲 怎样测试脉冲数:通过检测当前时刻和前一时刻的电平是否相同(通过反馈或者移位寄存器实现)来检测脉冲跳变 通过编码器测量速度 ...

  4. IntelliJ IDEA2017 + Tomcat 设置热部署

    1.点击idea中tomcat设置 2.点击deployment查看Deploy at the server startup 中tomcat每次所运行的包是 xxxx:war 还是其他,如果是xxxx ...

  5. 【BZOJ2301】【HAOI2011】Problem b [莫比乌斯反演]

    Problem b Time Limit: 50 Sec  Memory Limit: 256 MB[Submit][Status][Discuss] Description 对于给出的n个询问,每次 ...

  6. codefoeces problem 671D——贪心+启发式合并+平衡树

    D. Roads in Yusland Mayor of Yusland just won the lottery and decided to spent money on something go ...

  7. bzoj 2435 BFS

    我们可以先将无根树变成有根树,随便选一个点当根就行了,我们选1,bfs求出来每个点 的size值,代表以它为根节点的子树中有多少个节点,(dfs可能会爆栈),然后再对于每一条 边算就好了 我tle了, ...

  8. Linux实现利用SSH远程登录服务器详解

    Linux实现利用SSH远程登录服务器详解 http://www.111cn.net/sys/linux/55152.htm

  9. DRF基类APIView提供的Request、Response和序列化器的综合使用

    关于DRF基类APIView提供的Request和Response对象的作用,可以看我的另一篇博文:https://www.cnblogs.com/chichung/p/9939864.html 综合 ...

  10. css深入理解之border

    1.  border-width border-width不支持百分比,类似的还有outline,box-shadow,text-shadow等 border-width支持关键字:thin(1px, ...