1)Json基础
2)Json 字符串和Json对象
3)应用例子
4)JsonHelper

1)Json 基础
JSON中对象通过"{}"来标识,一个"{}"代表一个对象,如{"AreaId":"123"},
对象的值是键值对的形式(key:value)。
 "[]",标识数组,数组内部各个数据之间通过","分割,如["AreaId":"123","AreaId":"345"]。
很多情况下是对象数组,那就是这样: [{"AreaId":"123"},{"AreaId":"345"}]
数组也是一个对象: {"Area":[{"AreaId":"123"},{"AreaId":"345"}]} 这表示一个Area对象,
他有两个子数据,每个子数据也是一个对象,每个子对象都是AreaId。
2)Json字符串和Json对象
json字符串:Var strJSON = "{"Area":[{"AreaId":"123"},{"AreaId":"345"}]}",
其实也可以写成这样:Var strJSON = ‘{"Area":[{"AreaId":"123"},{"AreaId":"345"}]}',
这表示一个JSON字符串,由于在Js中单引号和双引号都可以表示一个字符串,所以上面第一个使用双引号和第二个使用单引号的都表示一个JSON字符串。
字符串的时候就要用eval转化成jquery对象,代码如下:
var arr = '{"red":{"id":1,"name":"mary"},"blue":{"id":2,"name":"u71d5u5b50"}}';
var dataObj = eval("("+arr+")");//转换Json对象
$.each(dataObj,function(idx,item){
//输出
alert(item.id+"哈哈"+item.name);
})
Json对象:Var JSON = {"Area":[{"AreaId":"123"},{"AreaId":"345"}]},JSON对象最外面是没有单引号或者双引号的,这就表示一个JSON对象。
Json对象不需要转化,代码如下:
var arr = {"red":{"id":1,"name":"mary"},"blue":{"id":2,"name":"u71d5u5b50"}};
$.each(arr,function(idx,item){
//输出
alert(item.id+"哈哈"+item.name);
})
3)应用例子
前台JS:将传递过来的数据直接解析为json数据,也就是说这里的前台js代码可能直接把这些数据解析成json对象数据,而并非字符串数据,
如data[0].demoData,这里就直接使用了这个json对象数据。
$.ajax({
type: "post",
url: "Default.aspx",
dataType: "json",
success: function (data) {
alert(data[0].demoData);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});

后台代码:

<span style="white-space: pre;">			</span>Response.Clear();
Response.Write("[{"demoData":"This Is The JSON Data"}]");
Response.Flush();
Response.End();

  

4)JsonHelper应用

   public class UserClass
    {
        public string Name { set; get; }
        public string sex { set; get; }
    }  
//应用
        public string MyAjax2(string val1)
        {
                var strJSON = "[{\"name\":\"name1\",\"sex\":\"man\" },{\"name\":\"name2\",\"sex\":\"woman\" }]";
                List<UserClass> list =  DeserializeUserList(strJSON);
                foreach (var item in list)
                {
                    var name=item.name;
<span style="white-space:pre">		</span>  var sex=item.sex;
                }
            return "ok";
        }
//直接将Json转化为实体对象
public List<UserClass> DeserializeUserList(string json)
{
var u = JsonHelper.JSONToObject<List<UserClass>>(json);
return u;
}

//JsonHelper.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Script.Serialization;
using System.Data; namespace MvcAspxMovie.Models
{ /// <summary>
/// JSON帮助类
/// </summary>
public class JsonHelper
{
/// <summary>
/// 对象转JSON
/// </summary>
/// <param name="obj">对象</param>
/// <returns>JSON格式的字符串</returns>
public static string ObjectToJSON(object obj)
{
JavaScriptSerializer jss =new JavaScriptSerializer();
try
{
return jss.Serialize(obj);
}
catch(Exception ex)
{
throw new Exception("JSONHelper.ObjectToJSON(): "+ ex.Message);
}
} /// <summary>
/// 数据表转键值对集合 www.2cto.com
/// 把DataTable转成 List集合, 存每一行
/// 集合中放的是键值对字典,存每一列
/// </summary>
/// <param name="dt">数据表</param>
/// <returns>哈希表数组</returns>
public static List<Dictionary<string,object>>DataTableToList(DataTable dt)
{
List<Dictionary<string,object>> list
=new List<Dictionary<string,object>>(); foreach(DataRow dr in dt.Rows)
{
Dictionary<string,object> dic =new Dictionary<string,object>();
foreach(DataColumn dc in dt.Columns)
{
dic.Add(dc.ColumnName, dr[dc.ColumnName]);
}
list.Add(dic);
}
return list;
} /// <summary>
/// 数据集转键值对数组字典
/// </summary>
/// <param name="dataSet">数据集</param>
/// <returns>键值对数组字典</returns>
public static Dictionary<string,List<Dictionary<string,object>>>DataSetToDic(DataSet ds)
{
Dictionary<string,List<Dictionary<string,object>>> result =new Dictionary<string,List<Dictionary<string,object>>>(); foreach(DataTable dt in ds.Tables)
result.Add(dt.TableName,DataTableToList(dt)); return result;
} /// <summary>
/// 数据表转JSON
/// </summary>
/// <param name="dataTable">数据表</param>
/// <returns>JSON字符串</returns>
public static string DataTableToJSON(DataTable dt)
{
return ObjectToJSON(DataTableToList(dt));
} /// <summary>
/// JSON文本转对象,泛型方法
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="jsonText">JSON文本</param>
/// <returns>指定类型的对象</returns>
public static T JSONToObject<T>(string jsonText)
{
JavaScriptSerializer jss =new JavaScriptSerializer();
try
{
return jss.Deserialize<T>(jsonText);
}
catch(Exception ex)
{
throw new Exception("JSONHelper.JSONToObject(): "+ ex.Message);
}
} /// <summary>
/// 将JSON文本转换为数据表数据
/// </summary>
/// <param name="jsonText">JSON文本</param>
/// <returns>数据表字典</returns>
public static Dictionary<string,List<Dictionary<string,object>>>TablesDataFromJSON(string jsonText)
{
return JSONToObject<Dictionary<string,List<Dictionary<string,object>>>>(jsonText);
} /// <summary>
/// 将JSON文本转换成数据行
/// </summary>
/// <param name="jsonText">JSON文本</param>
/// <returns>数据行的字典</returns>
public static Dictionary<string,object>DataRowFromJSON(string jsonText)
{
return JSONToObject<Dictionary<string,object>>(jsonText);
}
} }

MVC4:ajax Json 应用的更多相关文章

  1. 基于MVC4+EF5.0+Ajax+Json+CSS3的简单注册页面(get&post)

    使用mvc4可以很快速的创建页面,但封装的过多,难免会有些性能上的问题.所以基于此,通过使用简单的手写html,加ajax,json来创建一个注册页面,会比较干净,简洁. 本项目的环境是MVC4+EF ...

  2. 如何构建ASP.NET MVC4&JQuery&AJax&JSon示例

    背景: 博客中将构建一个小示例,用于演示在ASP.NET MVC4项目中,如何使用JQuery Ajax. 步骤: 1,添加控制器(HomeController)和动作方法(Index),并为Inde ...

  3. 如何构建 MVC&AJax&JSon示例

    背景: 博客中将构建一个小示例,用于演示在ASP.NET MVC4项目中,如何使用JQuery Ajax. 直接查看JSon部分 步骤: 1,添加控制器(HomeController)和动作方法(In ...

  4. struts2 + ajax + json的结合使用,实例讲解

    struts2用response怎么将json值返回到页面javascript解析,这里介绍一个struts2与json整合后包的用法. 1.准备工作 ①ajax使用Jquery:jquery-1.4 ...

  5. AJAX,JSON搜索智能提示

    效果 开发结构参考AJAX,JSON用户校验 主要有两个核心文件 1,处理输入字符,进行后台搜索的servlet Suggest.java package org.guangsoft.servlet; ...

  6. php ajax json jquery 记录

    php+jquery+ajax+json简单小例子 <html> <title>php+jquery+ajax+json简单小例子</title> <?php ...

  7. 练习 jquery+Ajax+Json 绑定数据 分类: asp.net 练习 jquery+Ajax+Json 绑定数据 分类: asp.net

    练习 jquery+Ajax+Json 绑定数据

  8. Jquery+ajax+json+servlet原理和Demo

    Jquery+ajax+json+servlet原理和Demo 大致过程: 用户时间点击,触发js,设置$.ajax,开始请求.服务器响应,获取ajax传递的值,然后处理.以JSON格式返回给ajax ...

  9. 玩转Web之Json(一)-----easy ui+ajax + json 中关于Json的解析问题

    在easy ui中使用Ajax+Json实现前后的数据交互时,当后台数据传输到客户端是需对Json数据进行解析,这里将对Json数据解析做简单总结. (一) 对于服务器返回的数据若没有做类型说明,需要 ...

随机推荐

  1. 六、JVM — JDK 监控和故障处理工具

    JDK 监控和故障处理工具总结 JDK 命令行工具 jps:查看所有 Java 进程 jstat: 监视虚拟机各种运行状态信息 jinfo: 实时地查看和调整虚拟机各项参数 jmap:生成堆转储快照 ...

  2. Maven快速安装配置

    环境:windows7_x86  maven3.3.3   maven是管理项目的常用工具,不用安装,直接配置即可.在配置maven前,需要先安装JDK.   1,安装JDK(注意此版本的Maven要 ...

  3. 梯度下降算法(Gradient descent)GD

    1.我们之前已经定义了代价函数J,可以将代价函数J最小化的方法,梯度下降是最常用的算法,它不仅仅用在线性回归上,还被应用在机器学习的众多领域中,在后续的课程中,我们将使用梯度下降算法最小化其他函数,而 ...

  4. SPSS Statistics 多个版本的下载安装激活步骤

    SPSS 23:https://www.cnblogs.com/coco56/p/11648386.html SPSS25:https://www.cnblogs.com/coco56/p/11648 ...

  5. verilog版插值

      开发环境:IDE:LIBERO 9.0(ACTEL公司的)芯片:AFS600 (BGA256),是混合系列的FPGA仿真软件:modelsim atcel 6.5d综合软件:synplify pr ...

  6. windows无法安装.net framework 3.5解决方法

    windows server 12r2 或 win10 安装.netframework 3.5方法: 一. 直接在“启用或关闭windows功能”中可以启用,需联网.但是经常会出错,可能安装过程中需要 ...

  7. if [ $? -eq 0 ]; then该语句是什么含义?

    某个shell脚本 # mkimage.sh echo "make and copy android images" ./mkimage.sh ]; then echo " ...

  8. python面向对象--类的装饰器

    # def deco(obj): # print("=====",obj) # obj.x=1 # return obj # @deco#===> test = deco(t ...

  9. css----动画(图片无限放大缩小)

    先给大家推荐animate.css库,里面有一些效果很不错的过度样式,不想自己写的也可以直接安装这个库来使用,如果不想安装这个库也可以去https://daneden.github.io/animat ...

  10. [每日一讲] Python系列:Python概述

    Python 序章 概述 Python 是弱类型动态解释型的面向对象高级语言,其具备面向对象的三大特点:封装.继承.多态.Python 代码运行时,其有一个编译过程,通过编译器生成 .pyc 字节码 ...