首先我们在客户端生成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. input输入浮动提示

    html代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  2. C#与数据库的连接的三种方式

    学习了.net的知识从C#一直到MVC,我一直觉得基础很重要,最近有复习一下数据库连接的三种方式 1 返回结果集的一张表 public static DataTable ExecuteDataTabl ...

  3. LOJ 6057 - [HNOI2016]序列 加强版再加强版

    Description 给定一个长度为 \(n\le 3*10^6\) 的序列 \(q\le 10^7\) 次询问每次求区间 \([l,r]\) 的所有子区间的最小值的和 询问随机 Solution ...

  4. 【CF1027D】Mouse Hunt(拓扑排序,环)

    题意:给定n个房间,有一只老鼠可能从其中的任意一个出现, 在第i个房间设置捕鼠夹的代价是a[i],若老鼠当前在i号房间则下一秒会移动到b[i]号, 问一定能抓住老鼠的最小的总代价 n<=2e5, ...

  5. bzoj 1191 匈牙利算法

    只需要做一遍匈牙利,只要有一个没法匹配上就break就行了 /************************************************************** Proble ...

  6. 渗透测试中如何科学地使用V*P*N

    环境说明 Windows7 虚拟机,作为VPN网关,负责拨VPN.VPN可以直接OPENVPN,也可以使用ShadowSocks+SSTap. Kali 虚拟机, 渗透测试工作机 配置步骤 Windo ...

  7. HDU1143(3*N的地板铺1*2的砖)

    Tri Tiling Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  8. boost::function的简单实现

    前言 boost::function和boost:bind是一对强大的利器.相信用过的童鞋多少有些体会. 虽然平时在用boost::function,但是用的时候心中总会一些不安,因为不知道它是怎么实 ...

  9. 用js和jQuery做轮播图

    Javascript或jQuery做轮播图 css样式 <style> a{ text-decoration:none; } .naver{ width: 100%; position:r ...

  10. 使用Windows下的git工具往github上传代码 踩坑记录

    使用Windows下的git工具往github上传代码 踩坑记录 背景 由于以前接触的项目都是通过svn进行版本控制,现在公司项目使用git,加上自己平时有一个练手小项目,趁着周末试着把项目上传到自己 ...