/**
* Created by cdpmac on 15/10/20.
*/
var topname="Ap";
var jdata={
"item": {
"id": "55b71c374d65c9b50212d4ba",
"contactName": "",
"industries": [
"生活服务",
"小区"
],
"hello":[
{word:1},
{word:2},
{word:3}
],
"coordinates": {
"lat": 39.7229,
"lng": 116.342
}
}
};
var defaulttype="string"; var otherobj=[]; String.prototype.firstToUpperCase=function(){
return this[0].toUpperCase()+this.substring(1);
}
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)+' `json:"'+key+'" bson:"'+key+'"`'+"\n"
}
goobjstring+="}\n";
while (otherobj.length>0){
var subobj=otherobj.pop();
getStruct(subobj.obj,subobj.key)
}
} 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;
} getStruct(jdata
,topname)
console.log(goobjstring);

执行结果

type Ap struct {
Item Item `json:"item" bson:"item"`
}
type Item struct {
Id string `json:"id" bson:"id"`
ContactName string `json:"contactName" bson:"contactName"`
Industries []string `json:"industries" bson:"industries"`
Hello []Hello `json:"hello" bson:"hello"`
Coordinates Coordinates `json:"coordinates" bson:"coordinates"`
}
type Coordinates struct {
Lat int `json:"lat" bson:"lat"`
Lng int `json:"lng" bson:"lng"`
}
type Hello struct {
Word int `json:"word" bson:"word"`
}

最新文章

  1. 开篇----JavaScript细节的那些事儿
  2. PageRank算法简介及Map-Reduce实现
  3. Win7下如何设置护眼的电脑豆沙绿界面?保护眼睛的颜色设置教程
  4. Robot Framework--安装篇
  5. 【翻译】CEDEC2013 BANDAI NAMCO 了解游戏格斗动画中的身体运动结构和原理
  6. SparkSQL使用之JDBC代码访问Thrift JDBC Server
  7. matrix_last_acm_2
  8. html 动态添加TABLE的行。
  9. CircleProgressBar
  10. Windows Phone开发(44):推送通知第二集——磁贴通知
  11. 解决Ubuntu手动安装vim后无法正常…
  12. insertBefore 和 insetAfter函数详解
  13. 基于三层架构的增删改查Get知识点
  14. asp.net mvc自动压缩文件,并生成CDN引用
  15. E: Sub-process /usr/bin/dpkg returned an error code (1)错误解决
  16. LINQ 如何动态创建 Where 子查询
  17. GMM-实现聚类的代码示例
  18. kafka可视化工具kafka tools
  19. [LeetCode] 443. String Compression_Easy tag:String
  20. BZOJ 2466 [中山市选2009]树(高斯消元)

热门文章

  1. Redis安装手册
  2. 【SSM 6】Spring+SpringMVC+Mybatis框架搭建步骤
  3. MySQL数据库(表)的导入导出(备份和还原)
  4. 配置Struts.xml DTD文件报错
  5. 解决Debian系统的Crontab执行时间时差问题
  6. Android四大组件及activity的四大启动模式
  7. Socket原理与编程基础
  8. php开发环境
  9. dubbo-admin重新编译后部署出现 valid LOC header (bad signature)异常
  10. AIX 环境下ODM库同步