前台向后台传递JSON字符串,处理JSON字符串类型的方法
--欢迎多多评论多多交流,指正缺点
在这之前必要提到这些JSON的转换都是依赖于引入 ,
首先你得懂得用 ajax 传值到一般处理程序, 以及基本得json字符串结构
Newtonsoft.Json.dll 动态链接库文件,
需要的同学可以点击链接去我的百度云下载 ,下面给出地址
链接:https://pan.baidu.com/s/1yINv3y6r-MsV1C6hcyxMtQ 提取码:2lv6
用的时候就首先引入命名空间就可以调用里面的方法拉
然后我们来介绍介绍里面的主要方法
1) JsonConvert.SerializeObject() 将指定的对象序列化为JSON字符串。 (后台打包回来)
2) JsonConvert.DeserializeObject() 将JSON字符串反序列化为指定的.NET类型 (后台解析,JSON字符串为某种集合类型)
3) JSON.parse() 将JSON字符串转为一个对象。 (前台转换)
4) JSON.stringify() 将 JavaScript 值转换为 JSON 字符串, (前台转换)
里面有很多转换方法,但这里主要转换是字符串,数组,键值对 的方法, 其他方法不过多累赘
JSON传递到后台的数据是多种多样的,但基本思想大致是一样的,(我想其他的传递思想应该是大同小异的)
1.不同的传值方式前台序列化成JSON字符串传递到后台
2.后台用合适的集合或者封装类的方法进行解析浅谈传递过来的JSON字符串,然后在后台程序中处理,处理完成序列化成JSON字符串打包回来
3.前台接送到后台传递回来的JSON字符串,转换为JSON 对象进行合理的拆分,取值(原来什么类型传就用什么方式取)
(方法1——传递单个字符串) 当传递单个值得情况下
var self="asd";
JSON.stringify("asd") 后台接收: "asd"
如果说单纯得传递一个字符串到后台得时候往往是非常容易的, 这里就不过多累赘
比较简单得就可实现 数据库语句得字符串拼接了,
这个时候而言,我们无非就是对返回回来的字符串进行判读处理,值得一提的是如果我们返回一个Bool 值类型 ,在经过toString()方法之后, 首字母是会转换成大写的
因此判断的时候如果出错要稍微注意一下了
(方法2,3 传递多值得时候)通过一个例子来理解把
这个例子是基于点击按钮之后,通过后台为文本添加上已经处理
点击之后效果如下
(方法2——传递键值对的形式)
获取相应文本框的数据作为值,
我们在文本框依次输入 测试数据1,测试数据2,测试数据3,测试数据4
如果我们前台alert直接弹出这个return的值
alert(JSON.stringify([object Object]) )弹窗处理这个对象之后可以得到这样一个JSON 字符串:
那么后台(一般处理程序或者类文件中)如何取出这样的键值对形式呢,可以直接通过字典集合的形式进行解析处理 一般来所键值对的形式我们用字典集合处理比较好
Dictionary<string, string> WeekDictionary = JsonConvert.DeserializeObject<Dictionary<string, string>>(pars); //将我们的键值对对象转换为字典集合
for (int i = 0; i < WeekDictionary.Count; i++)
{
string ValueIndex = "value" + (i + 1).ToString();
WeekDictionary[ValueIndex] = "已处理" + WeekDictionary[ValueIndex];
}
return JsonConvert.SerializeObject(WeekDictionary); //将指定的对象序列化为JSON字符串。
这样我们就可以在前台用统一的格式来处理这个JSON字符串了
对于这个 re 数据 我们可以对它进行处理,之后就可以在前台通过类似数组的索引的方式取出某一个值了
msg = (typeof (data) == "object" ? msg : JSON.parse(data)); //将这个json字符串转换成json对象 //将返回回来的数据转换成为一个数组 self.elems.$tmpl_input.val(msg["value1"]); self.elems.$tmpl_input1.val(msg["value2"]); self.elems.$tmpl_input2.val(msg["value3"]); self.elems.$tmpl_input3.val(msg["value4"]);
msg = (typeof (re) == "object" ? msg : JSON.parse(re)); --这句的意思是,判断是不是一个JSON对象,如果不是将JSON字符串转为一个对象。
(方法3——传数组的形式)
如果我们前台 alert($p);
alert(JSON.stringify($p)); 处理这个对象之后可以得到这样一个JSON 字符串:
后台转换之后得到的数据
最后经过 JsonConvert.SerializeObject(list); //将指定的list集合序列化为JSON字符串。 (拿数据)
在这之后前台可以拿到数据
对于这个 re 数据 我们可以对它进行处理,之后就可以在前台通过类似数组的索引的方式取出某一个值了 (读取数据)
msg = (typeof (data) == "object" ? msg : JSON.parse(data)); //将这个json字符串转换成json对象
self.elems.$tmpl_input.val(msg[0]);
self.elems.$tmpl_input1.val(msg[1]);
self.elems.$tmpl_input2.val(msg[2]);
self.elems.$tmpl_input3.val(msg[3]);
msg = (typeof (re) == "object" ? msg : JSON.parse(re));
--这句的意思是,判断是不是一个JSON对象,如果不是将JSON字符串转为一个对象。
----不能只思考而不去做,也不能只去做而不思考,同样在生活中也要成为一个细心的人