张家口产业监测
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

223 lines
6.2 KiB

function JsonToStr(o) {
var arr = [];
var fmt = function(s) {
if (typeof s == 'object' && s != null) return JsonToStr(s);
return /^(string|number)$/.test(typeof s) ? "'" + s + "'" : s;
}
for (var i in o) arr.push("'" + i + "':" + fmt(o[i]));
return '{' + arr.join(',') + '}';
}
function obj2str(o){
var r = [];
if(typeof o == "string" || o == null) {
return o;
}
if(typeof o == "object"){
if(!o.sort){
r[0]="{"
for(var i in o){
r[r.length]=i;
r[r.length]=":";
r[r.length]=obj2str(o[i]);
r[r.length]=",";
}
r[r.length-1]="}"
}else{
r[0]="["
for(var i =0;i<o.length;i++){
r[r.length]=obj2str(o[i]);
r[r.length]=",";
}
r[r.length-1]="]"
}
return r.join("");
}
return o.toString();
}
/**
**json对象数据设置到表单域中
*/
function jsonObjectToForm(form, jsonObject) {
for (i = 0, max = form.elements.length; i < max; i++) {
e = form.elements[i];
eName = e.name;
if (eName.indexOf(".") > 0) {
dotIndex = eName.indexOf(".");
parentName = eName.substring(0, dotIndex);
childName = eName.substring(dotIndex + 1);
//迭代判断eName,组装成json数据结构
eValue = iterValueFromJsonObject(jsonObject, parentName, childName);
} else {
eValue = jsonObject[eName];
}
if (eValue!== false && eValue != "undefined" && eValue != "null") {
switch (e.type) {
case "checkbox":
case "radio":
if (e.value == eValue) {
e.checked = true;
}
break;
case "hidden":
case "password":
case "textarea":
case "text":
e.value = eValue;
break;
case "select-one":
case "select-multiple":
for (j = 0; j < e.options.length; j++) {
op = e.options[j];
//alert("eName : " + eName + "; op value : " + op.value + "; eValue : " + eValue);
if (op.value == eValue) {
op.selected = true;
}
}
break;
case "button":
case "file":
case "image":
case "reset":
case "submit":
default:
}
}
}
}
/**
* json数组读写有两种方式
* 1: a.bs[0].id
* 2: a["bs"][0]["id"]
* 把表单转换成json数据格式
*/
function formToJsonObject(form) {
var jsonObject = {};
for (i = 0, max = form.elements.length; i < max; i++) {
e = form.elements[i];
em = new Array();
if (e.type == "select-multiple") {
for (j = 0; j < e.options.length; j++) {
op = e.options[j];
if (op.selected) {
em[em.length] = op.value;
}
}
}
switch (e.type) {
case "checkbox":
case "radio":
if (!e.checked) {
break;
}
case "hidden":
case "password":
case "select-one":
case "select-multiple":
case "textarea":
case "text":
eName = e.name;
if (e.type == "select-multiple") {
eValue = em;
} else {
eValue = e.value.replace(new RegExp("([\"\\\\])", "g"), "\\$1");
}
//判断是否是对象类型数据
if (eName.indexOf(".") > 0) {
dotIndex = eName.indexOf(".");
parentName = eName.substring(0, dotIndex);
childName = eName.substring(dotIndex + 1);
//迭代判断eName,组装成json数据结构
iterJsonObject(jsonObject, parentName, childName, eValue);
} else {
//console.log(e.getAttribute('multiple'));
if(e.getAttribute('multiInput')!==null){
jsonObject[eName]=jsonObject[eName]||[];
jsonObject[eName].push(eValue);
}else{
jsonObject[eName] = eValue;
}
}
break;
case "button":
case "file":
case "image":
case "reset":
case "submit":
default:
}
}
return jsonObject;
}
/**
* 把表单元素迭代转换成json数据
*/
function iterJsonObject(jsonObject, parentName, childName, eValue) {
//pArrayIndex用于判断元素是否是数组标示
pArrayIndex = parentName.indexOf("[");
//判断是否集合数据,不是则只是对象属性
if (pArrayIndex < 0) {
var child = jsonObject[parentName];
if (!child) {
jsonObject[parentName] = {};
}
dotIndex = childName.indexOf(".");
if (dotIndex > 0) {
iterJsonObject(jsonObject[parentName], childName.substring(0, dotIndex), childName.substring(dotIndex + 1), eValue);
} else {
jsonObject[parentName][childName] = eValue;
}
} else {
pArray = jsonObject[parentName.substring(0, pArrayIndex)];
//若不存在js数组,则初始化一个数组类型
if (!pArray) {
jsonObject[parentName.substring(0, pArrayIndex)] = new Array();
}
//取得集合下标,并判断对应下标是否存在js对象
arrayIndex = parentName.substring(pArrayIndex + 1, parentName.length - 1);
var c = jsonObject[parentName.substring(0, pArrayIndex)][arrayIndex];
if (!c) {
jsonObject[parentName.substring(0, pArrayIndex)][arrayIndex] = {};
}
dotIndex = childName.indexOf(".");
if (dotIndex > 0) {
iterJsonObject(jsonObject[parentName.substring(0, pArrayIndex)][arrayIndex], childName.substring(0, dotIndex), childName.substring(dotIndex + 1), eValue);
} else {
jsonObject[parentName.substring(0, pArrayIndex)][arrayIndex][childName] = eValue;
}
}
}
/**
* 迭代json数据对象设置到表单域中
*/
function iterValueFromJsonObject(jsonObject, parentName, childName) {
//pArrayIndex用于判断元素是否是数组标示
pArrayIndex = parentName.indexOf("[");
//判断是否集合数据,不是则只是对象属性
if (pArrayIndex < 0) {
dotIndex = childName.indexOf(".");
if (dotIndex > 0) {
return iterValueFromJsonObject(jsonObject[parentName], childName.substring(0, dotIndex), childName.substring(dotIndex + 1));
} else {
return jsonObject[parentName][childName];
}
} else {
pArray = jsonObject[parentName.substring(0, pArrayIndex)];
//取得集合下标,并判断对应下标是否存在js对象
arrayIndex = parentName.substring(pArrayIndex + 1, parentName.length - 1);
var c = jsonObject[parentName.substring(0, pArrayIndex)][arrayIndex];
dotIndex = childName.indexOf(".");
if (dotIndex > 0) {
return iterValueFromJsonObject(jsonObject[parentName.substring(0, pArrayIndex)][arrayIndex], childName.substring(0, dotIndex), childName.substring(dotIndex + 1));
} else {
return jsonObject[parentName.substring(0, pArrayIndex)][arrayIndex][childName];
}
}
}