json轉換為go類檔案,js指令碼,nodejs執行

來源:互聯網
上載者:User

標籤:mongodb   bad   master   prototype   產生   name   cto   span   ase   

 

js寫的代碼產生指令碼,json產生對應的go type對象

作json轉換用

js指令碼無甚何依賴,可以直接運行

執行前,按需變更檔

樣本

var topname="Data";var defaulttype="string";var bson=true; //對應 mongodb var json=true; //http response var scheme=false; //http request->scheme var jdata={    "_id" : "564d5162e54b3106fb7badea",    "macs" : [        "00-21-26-00-C8-B0"    ],    "time" : 1447907400,    "timestr" : "2015-11-19 12:30",    "shop":{        "name":"shop1"    }};String.prototype.firstToUpperCase=function(){    return this[0].toUpperCase()+this.substring(1);}var fun=(function(){    var otherobj=[];    var goobjstring="";    function getStruct(data,collectionname){        goobjstring+="type "+collectionname.firstToUpperCase()+" struct {\n";        var per="\t";        for(var key in data){            var newkey=key.firstToUpperCase();            goobjstring+=per +newkey+" "+getType(data[key],key);            if (json||bson||scheme){                goobjstring+=‘ `‘;                var temparr=[]                if (json){                    temparr.push(‘json:"‘+key+‘"‘);                }                if (bson){                    temparr.push(‘bson:"‘+key+‘"‘);                }                if (scheme){                    temparr.push(‘scheme:"‘+key+‘"‘);                }                goobjstring+=temparr.join(" ");                goobjstring+=‘`‘;            }            goobjstring+="\n";        }        goobjstring+="}\n";        while (otherobj.length>0){            var subobj=otherobj.pop();            getStruct(subobj.obj,subobj.key)        }        return goobjstring    }    function getType(obj,key){        var type=defaulttype;        if(obj){            switch(obj.constructor)            {                case Array:                    type="[]"+getType(obj[0]||"",key.firstToUpperCase()) ;                    break;                case Object:                    otherobj.push({key:key,obj:obj});                    type=key.firstToUpperCase()                    break;                case String:                    type="string"                    break;                case Number:                    type="int"                    break;                case Boolean:                    type="bool"                    break;                default :            }        }        return type;    }    return getStruct})()console.log(fun(jdata,topname))

結果

type Data struct {
_id string `json:"_id" bson:"_id"`
Macs []string `json:"macs" bson:"macs"`
Time int `json:"time" bson:"time"`
Timestr string `json:"timestr" bson:"timestr"`
Shop Shop `json:"shop" bson:"shop"`
}
type Shop struct {
Name string `json:"name" bson:"name"`
}



代碼是之前輔助go 開發寫的

go的web架構

https://github.com/cclient/gowebframework

代碼路徑

https://github.com/cclient/gowebframework/blob/master/tool/code.js

json轉換為go類檔案,js指令碼,nodejs執行

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.