code: function jsonFile2TreeStr(){
      if(Type.isBoolean(argJ)){
          help();
          return;
      }
      if(argD){
          warningOut("OK! You'd better not use both -d(--d) and -j(--json) together in one cli. Pick one of them to exec, plz!");
      }
      let targetJson;
      let argJson = (Array.isArray(argJ) ? argJ[0] : argJ) || "";
      if(argJson.match(/^\{[\S\s:.]+}$/g)){// 简单判断一下输入的是否是json格式的字符串
          try{
              targetJson = JSON.parse(argJson);
          }catch (e1){
              try{
                  targetJson = (new Function("return "+argJson+";"))();
              }catch(e2){
                  errorOut(`Parse the input string to json obj failed!:\n${e1.toString()}\n${e2.toString()}`);
                  targetJson = false;
              }
          }
      }else{
          argJson = trimAndDelQuotes(argJson);
          let filePath = path.normalize(argJson);
          if(filePath.match(/(\.json[1-9]?)$/)){// 文件：*.json || *.json(1~9)
              jsonName = path.basename(filePath);
              try{
                  targetJson = JSON.parse(fs.readFileSync(path.join(cwd, filePath), 'utf8'));
              }catch (e3){
                  errorOut(e3.toString());
                  targetJson = false;
              }
          }else{
              targetJson = false;
              if(existsSync(filePath) && fs.statSync(filePath).isDirectory()){// 如果路径存在，且是一个文件夹，则进行遍历文件夹
                  argD = filePath;
                  dir2TreeStr();
              }else{
                  warningOut(`It looks like that u've typed in an incorrect json-file-path '${filePath}'! it should be 'xx/xxx/*.json', check, plz!`)
              }
          }
      }
      // finally parse
      s = Type.isNaN(s) ? 3 : s;
      v = Type.isNaN(v) ? 1 : v;
      _doMain(targetJson);
  }
docs: convert *.json file to tree-string