JSON常用操作
1. 模拟ChcekBox提交
function updateCatalog() { var param = {}; var pdata = []; var i = 0; $("input[name='ids[]']").each(function() { //alert(this.checked); if(this.checked == true) { //alert($(this).val()); pdata.push($(this).val()); } }); param.ids = pdata; param.catalog_id = $("#catalog_list").val(); alert(JSON.stringify(param)); return false; }
2. JS对象转json串
var notedata = new Object; notedata.nid = strnid; notedata.type = $hidtype.val(); notedata.title = $txttitle.val(); notedata.content = $txtacontent.val(); var jsonotedata = JSON.stringify(notedata);
3. JSON串转JSON对象
var jsonStr = '{"id":10,"name":"hehhe"}'; var jsonObj = JSON.parse(jsonStr);
4. 一个简单的Jquery.HashMap插件
/** 功能:jquery HashMap 插件 作者:李小宇 */ ;(function($){//可以去掉开头的 ; (分号),国外的开发人员编写的插件时的一种习惯 //Map数据 var $_values = {} var $_HashMap = { clear: function() { //清除Map数据 $_values = {}; }, containsKey: function($key) { //检查Map中是否指定key if(typeof $_values[$key] == "undefined") { return false; } return true; }, containsValue: function($value) { //Map是否包含指定value var jsonLength = 0; for(var item in $_values) { if($_values[item] == $value) { return true; } } return false; }, contains: function($key, $value) { //Map中是否包含指定的key和对应的value if(this.containsKey($key)) { return (this.get($key) == $value); } return false; }, get: function($key) { //根据Key取得Map中的value if (this.containsKey($key)) { return $_values[$key]; } else { return null; } }, isEmpty: function() { //Map是否为空 return $.isEmptyObject($_values); }, put: function($key, $value) { //放入指定的Key和value到Map,如果存在同名键名,则覆盖 $_values[$key] = $value; }, putAll: function($value) { //批量放入values到Map for(var item in $value) { this.put(item,$value[item]); } }, remove: function($key) { //移出Map中指定的键名value json = {}; for(var item in $_values) { if($key != item) { json[item] = this.get(item); } } $_values = json; }, size: function() { //取得Map对象的长度 var jsonLength = 0; for(var item in $_values) { jsonLength++; } return jsonLength; }, toString: function() { return JSON.stringify($_values); } }; $.extend({"HashMap":$_HashMap}); })(jQuery);
测试
$(function() { //var json = [{"a1":"1"},{"a2":"2"},{"a3":"3"}]; var json = {"a1":"1","a2":"2","a3":"3"}; $.HashMap.putAll(json); alert($.HashMap.toString()); });
说明:插件的用法的就是js匿名函数的用法,例如下面的两段代码是等效的
(function(a,b){ alert(a+b); })(1,2)
等于
var add = function(a,b) { alert(a+b); } add(1,2);