利用js解析php的表單資料
利用js解析php的表單資料
/**
* JsonParse
* Created by usher.yue.
* User: usher.yue
* Date: 17/9/7
* Time: 13:50
* 心懷教育夢-煙臺網格軟體技術有限公司
*/
var obj = {
`data[][classid][0]`: `1000150097620084286`,
`data[][create_time][0]`: `1504692288`,
`data[][kcid][0]`: `1033150427887550927`,
`data[][schoolid][0]`: `1033144479144228284`,
`data[][type][0]`: `2`,
`data[][uid][0]`: `1034145308280458231`,
`data[][zyid][0]`: `1000150235157063544`,
`data[][zytype][0]`: `homework-exercise`,
`data[][classid][1]`: `10001500976200842861`,
`data[][create_time][1]`: `1504692288`,
`data[][kcid][1]`: `1033150427887550927`,
`data[][schoolid][1]`: `1033144479144228284`,
`data[][type][1]`: `2`,
`data[][uid][1]`: `1034145308280458231`,
`data[][zyid][1]`: `1000150235157063544`,
`data[][zytype][1]`: `homework-exercise`,
`data[0][classid][2]`: `10001500976200842861`,
`data[0][create_time][2]`: `1504692288`,
`data[0][kcid][2]`: `1033150427887550927`,
`data[0][schoolid][2]`: `1033144479144228284`,
`data[0][type][2]`: `2`,
`data[0][uid][2]`: `1034145308280458231`,
`data[0][zyid][2]`: `1000150235157063544`,
`data[0][zytype][2]`: `homework-exercise`,
`data[0][classid][3]`: `10001500976200842861`,
`data[0][create_time][3]`: `1504692288`,
`data[0][kcid][3]`: `1033150427887550927`,
`data[0][schoolid][3]`: `1033144479144228284`,
`data[0][type][3]`: `2`,
`data[0][uid][3]`: `1034145308280458231`,
`data[0][zyid][3]`: `1000150235157063544`,
`data[0][zytype][3]`: `homework-exercise`
};
class Xue12JsonConvert {
/**
* deep merge
* @param target
* @param source
* @returns {*}
* @private
*/
__d(target, source) {
for (var k in source) {
if (target[k] && target[k].toString() === "[object Object]") {
this.__d(target[k], source[k])
}
else {
if (this.__type(target[k]) === "[object Array]") {
//去空合併
if (this.__type(source[k]) === "[object Array]") {
for (let item of source[k]) {
item && target[k].push(item);
}
}else{
target[k].push(source[k]);
}
} else {
target[k] = source[k];
}
}
}
return target;
}
/**
* json parser
* @param obj
* @param keyList
* @param deepVal
* @returns {*}
* @private
*/
__parseToJson(obj, keyList, deepVal) {
let retObj = null;
if (!keyList) {
let re = /([_a-zA-Z]w+|[]|[[0-9]+]|[[_a-zA-Z]w*])/g;
let combineArr = [];
let combineObj={};
for (var key in obj) {
retObj = {};
//解析key
let matchSubKey = re[Symbol.match](key);
let indexMatch = /^[([0-9]+)]$/.exec(matchSubKey[1]);
let noneIndexMatch = /^[]$/.exec(matchSubKey[1]);
let objectMatch = /^[([a-zA-Z_]w+)]$/.exec(matchSubKey[1]);
if (indexMatch) {
retObj[matchSubKey[0]] = [];
} else if (noneIndexMatch) {
retObj[matchSubKey[0]] = [];
} else if (objectMatch) {
retObj[matchSubKey[0]] = {};
}
//賦值
retObj[matchSubKey[0]] = this.__parseToJson(null, matchSubKey.slice(1), obj[key]);
//合併物件
combineObj=this.__d(combineObj,retObj);
}
//解析資料
return combineObj;
} else {
if (keyList.length > 1) {
let indexMatch = /^[([0-9]+)]$/.exec(keyList[0]);
let noneIndexMatch = /^[]$/.exec(keyList[0]);
let objectMatch = /^[([a-zA-Z_]w+)]$/.exec(keyList[0]);
if (indexMatch) {
retObj = [];
retObj[indexMatch[1]] = this.__parseToJson(null, keyList.slice(1), deepVal);
} else if (noneIndexMatch) {
retObj = [];
retObj[noneIndexMatch[1]] = [];
retObj.push(this.__parseToJson(null, keyList.slice(1), deepVal));
} else if (objectMatch) {
retObj = {};
retObj[objectMatch[1]] = {};
retObj[objectMatch[1]] = this.__parseToJson(null, keyList.slice(1), deepVal);
}
} else if (keyList.length == 1) {
let indexMatch = /^[([0-9]+)]$/.exec(keyList[0]);
let noneIndexMatch = /^[]$/.exec(keyList[0]);
let objectMatch = /^[([a-zA-Z_]w+)]$/.exec(keyList[0]);
if (indexMatch) {
retObj = [];
retObj[indexMatch[1]] = deepVal;
} else if (noneIndexMatch) {
retObj = [];
retObj.push(deepVal);
} else if (objectMatch) {
retObj[objectMatch[1]] = deepVal;
}
}
}
return retObj;
}
/**
* type
* @param o
* @returns {*}
* @private
*/
__type(o) {
return Object.prototype.toString.call(o);
}
/**
* 轉換
* @param obj
* @returns {*}
*/
parseToJson(obj) {
return this.__parseToJson(obj);
}
}
let json = new Xue12JsonConvert();
let r = json.parseToJson(obj);
console.log(JSON.stringify(r))
相關文章
- js解析php格式的表單到json物件PHPJSON物件
- 將物件解析為JSON資料和將JSON資料解析為物件的簡單例項物件JSON單例
- PHP json的插入和解析在資料庫中的操作PHPJSON資料庫
- HTML表單與PHP進行資料互動HTMLPHP
- Form表單JSONContent-type解析ORMJSON
- 利用js編寫一個簡單的html表單驗證,驗證通過時提交資料(附原始碼)JSHTML原始碼
- json資料解析JSON
- PHP 表單提交後臺資料驗證 ValidatorPHP
- jq 將form表單中的資料轉為jsonORMJSON
- jQuery解析json格式資料生成級聯選單jQueryJSON
- 解析json資料生成樹形導航選單JSON
- 原生js實現獲取form表單資料JSORM
- 解決PHP Post獲取不到非表單資料的問題PHP
- 使用JSONPath解析JSON資料JSON
- 解析大資料json大資料JSON
- GEOJSON資料格式解析JSON
- 🎩 JSON Wizard for Mac - 解析你的 JSON 資料!🔮JSONMac
- JSON編碼格式提交表單資料詳解JSON
- php中利用json_encode和json_decode傳遞包括特殊字元的資料PHPJSON字元
- php表單提交PHP
- 利用flashback閃回表和資料
- js解析json資料例項分析JSON
- PHP文字資料表類 (轉)PHP
- php操作JSON格式資料PHPJSON
- 一個表單中的資料新增到不同的資料表中
- 簡單的資料表統計
- POST表單資料大小的限制
- 利用vstruct解析二進位制資料Struct
- 深入解析面向資料的雜湊表效能
- Ajax 提交表單資料
- 表單資料驗證
- 表單資料相關
- 038 收集表單資料
- php簡單操作mysql資料庫的類PHPMySql資料庫
- 泛微oa流程表單之js操作明細資料1JS
- 如果將json格式資料繫結與表單元素上JSON
- Go - 如何解析 JSON 資料?GoJSON
- Python中解析json資料PythonJSON