From b284064a524532215fde0f5e337dbc7d0501a050 Mon Sep 17 00:00:00 2001 From: wuyudi Date: Fri, 15 Oct 2021 02:08:58 +0800 Subject: [PATCH] style: :art: use es6 to clean code --- src/views/tool/library/json2CSharp.js | 51 +++++++++++++++++++++++++++ src/views/tool/library/json2Dart.js | 35 +++++++----------- 2 files changed, 64 insertions(+), 22 deletions(-) create mode 100644 src/views/tool/library/json2CSharp.js diff --git a/src/views/tool/library/json2CSharp.js b/src/views/tool/library/json2CSharp.js new file mode 100644 index 0000000..4b691c8 --- /dev/null +++ b/src/views/tool/library/json2CSharp.js @@ -0,0 +1,51 @@ +export default { + _allClass: [], + format(string, ...replace) { + return string.replace(/\{(\d+)\}/g, + (m, i) => replace[i] + ); + }, + _genClassCode(obj, name, pag) { + let clas = "// ========= " + name + `.cs file ========= \nnamespace ${pag}\n{\n`; + clas += ` public class ${name}\n {\n`; + for (let n in obj) { + let v = obj[n]; + n = n.trim(); + clas += ` ${this._genComment(v)} public ${this._genTypeByProp(n, v, pag)} ${n} { get; set; }\n`; + } + clas += " }\n"; + clas += "}\n"; + console.log(pag) + this._allClass.push(clas); + return this._allClass.join("\n"); + }, + _genTypeByProp(name, val, pag) { + switch (Object.prototype.toString.apply(val)) { + case "[object Number]": { + return val.toString().includes(".") ? "double" : "int"; + } + case "[object Date]": { + return "DateTime"; + } + case "[object Object]": { + name = name.substring(0, 1).toUpperCase() + name.substring(1); + this._genClassCode(val, name, pag); + return name; + } + case "[object Array]": { + return `List <${this._genTypeByProp(name + "Item", val[0], pag)}>`; + } + default: { + return "string"; + } + } + }, + _genComment(val) { + let commm = typeof (val) == "string" && /.*[\u4e00-\u9fa5]+.*$/.test(val) ? val : ""; + return "/// \n /// " + commm + "\n /// \n"; + }, + convert(jsonObj, cls, pag) { + this._allClass = []; + return this._genClassCode(jsonObj, cls, pag); + } +} \ No newline at end of file diff --git a/src/views/tool/library/json2Dart.js b/src/views/tool/library/json2Dart.js index 3cb29cc..6a3fe26 100644 --- a/src/views/tool/library/json2Dart.js +++ b/src/views/tool/library/json2Dart.js @@ -1,35 +1,28 @@ // 算法来源 https://github.com/zx1262111739/JsonToDart/blob/main/index.js let keywrods = "abstract,dynamic,implements,show,as,else,import,static,assert,enum,in,super,async,export,interface,switch,await,extends,is,sync,break,external,library,this,case,factory,mixin,throw,catch,false,new,true,class,final,null,try,const,finally,on,typedef,continue,for,operator,var,covariant,Function,part,void,default,get,rethrow,while,deferred,hide,return,with,do,if,set,yield,List"; let keywrodList = keywrods.split(","); - +const caption = (s) => s[0].toUpperCase() + s.substring(1); // 生成属性名 -const generatePropertyName = function (name) { +const generatePropertyName = (name) => { let nameParts = name.split("_"); let output = nameParts[0]; for (let index = 1; index < nameParts.length; index++) { - output += nameParts[index].substring(0, 1).toUpperCase() + nameParts[index].substring(1) + output += caption(nameParts[index]) } - if (keywrodList.indexOf(output) != -1) { - output = "m" + output.substring(0, 1).toUpperCase() + output.substring(1); + if (keywrodList.includes(output)) { + output = "m" + caption(output); } return output; } // 生成类名 -const generateClassName = function (name) { - let nameParts = name.split("_"); - let output = ""; - for (let index = 0; index < nameParts.length; index++) { - output += nameParts[index].substring(0, 1).toUpperCase() + nameParts[index].substring(1) - } - - return output; +const generateClassName = (name) => { + return name.split("_").map(caption).join(""); } -const convertObjectToClass = function (className, obj) { - +const convertObjectToClass = (className, obj) => { let propers = []; let subClass = []; for (let key in obj) { @@ -91,11 +84,11 @@ const convertObjectToClass = function (className, obj) { if (propertyType !== "") { propers.push({ - "key": key, + key, "propertyName": generatePropertyName(key), - "propertyType": propertyType, - "isSubclass": isSubclass, - "isArray": isArray, + propertyType, + isSubclass, + isArray, }); } @@ -200,6 +193,4 @@ const convertObjectToClass = function (className, obj) { return output; } -export default (json, typename) => { - return convertObjectToClass(typename, json) -} \ No newline at end of file +export default (json, typename) => convertObjectToClass(typename, json) -- GitLab