首先我们在客户端生成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. SpringMVC异常报406 (Not Acceptable)的解决办法

    使用SpsringMVC,使用restEasy调试,controller请求设置如下: @RequestMapping(value="/list",method=RequestMe ...

  2. 【BZOJ3029】守卫者的挑战 [期望DP]

    守卫者的挑战 Time Limit: 2 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description 打开了黑魔法师Vani的大门,队 ...

  3. 【NOI2014】起床困难综合症 位运算+贪心

    这道题先求出0和-1经过处理后的答案 具体看代码吧 #include<cstdio> #include<cstring> #include<algorithm> u ...

  4. bzoj 1025 DP

    这道题根据群论的基础知识,我们可以转化成将n拆分成若干数,求这些数 的lcm的方案数 先筛下素数表prime 那么我们可以用DP来解决这个问题,用W[I,J]代表I这个数,拆成若干个数, 其中质因数最 ...

  5. python—用for循环、while循环和一句话打印九九乘法表

    用for循环打印九九乘法表: for i in range (1,10): for j in range(1,10): print(j,"x",i,"=",i* ...

  6. CentOS 7 单用户模式修改root密码

    1)在启动grub菜单,选择编辑选项启动 2)按键盘e键,来进入编辑界面 3)找到Linux 16的那一行,将ro改为rw init=/sysroot/bin/sh 4)现在按下Control+x,使 ...

  7. 干货:MySQL数据库优化参考

    本文整理了一些MySQL的通用优化方法,做个简单的总结分享,旨在帮助那些没有专职MySQL DBA的企业做好基本的优化工作,至于具体的SQL优化,大部分通过加适当的索引即可达到效果,更复杂的就需要具体 ...

  8. appium===报错adb server version (31) doesn’t match this client (39); killing…的解决办法

    当使用在cmd窗口调用adb shell命令的时候 提示如下: adb server version (31) doesn't match this client (39); killing...er ...

  9. 利用Java编写简单的WebService实例-转载

    使用Axis编写WebService比较简单,就我的理解,WebService的实现代码和编写Java代码其实没有什么区别,主要是将哪些Java类发布为WebService.下面是一个从编写测试例子到 ...

  10. 解决使用base64解码太慢的问题,原因是根本就不应该使用此方法解决。

    /* 功能:将中文内容的斜杠和双引号转了,方便保存到lua+ssdb中,从SSDB提取出来组装JSON时就不会出错. 作者:黄海 时间:2015-01-31 */ function jsonencod ...