/**
* 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"`
}

javascript json转为 go struct 小工具代码的更多相关文章

  1. Python实现Json结构对比的小工具兼谈编程求解问题

    摘要: 通过使用Python编写一个解析Json结构对比的小工具,来提炼编程求解的通用步骤和技巧. 难度: 初级 先上代码. jsondiff.py #!/usr/bin/python #_*_enc ...

  2. 给json格式化的一个小工具

    var glob = require("glob") // options is optional var fs=require("fs") glob(&quo ...

  3. JSON生成c#类代码小工具

    JSON生成c#类代码小工具 为什么写这么个玩意 最近的项目中需要和一个服务端程序通讯,而通讯的协议是基于流行的json,由于是.net,所以很简单的从公司代码库里找到了Newtonsoft.dll( ...

  4. 一个Json结构对比的Python小工具兼谈编程求解问题

    先上代码. jsondiff.py #!/usr/bin/python #_*_encoding:utf-8_*_ import argparse import json import sys rel ...

  5. js 创建书签小工具之理论

    我们一直在寻找增加浏览体验的方法,有的方法众所周知,有的则鲜为人知.我原本认为书签小工具属于后者,非常令人讨厌的东西.令我非常懊恼的是我发现在这个问题上我完全是错误的.它并不是令人厌烦的,而是以用户为 ...

  6. OpenCV探索之路(二十五):制作简易的图像标注小工具

    搞图像深度学习的童鞋一定碰过图像数据标注的东西,当我们训练网络时需要训练集数据,但在网上又没有找到自己想要的数据集,这时候就考虑自己制作自己的数据集了,这时就需要对图像进行标注.图像标注是件很枯燥又很 ...

  7. html小工具——文章注释编辑器

    在网上阅读文章时,读者时常会想针对某段文字写一些自己的感想,可惜大部分阅读网站并不提供这样的功能,读者往往只能将文本复制到本地或在线的编辑器中编辑注释,之后如果想在其他地方回顾这些注释也必须先本地安装 ...

  8. Python趣味实用小工具

    代码地址如下:http://www.demodashi.com/demo/12918.html python 趣味实用小工具 概述 用python实现的三个趣味实用小工具: 图片转Execl工具 , ...

  9. JavaScript 相关的工具代码

    博客地址:https://ainyi.com/49 记录一些数据处理需要的方法工具代码 持续更新中... 时间戳转与日期格式相互转换 时间戳转换成日期格式 function timestampToTi ...

随机推荐

  1. nodejs(1)

    node.js 是一个让javascript运行在服务端的开发平台 node.js的环境部署 1.下载安装包 https://nodejs.org/en/ 安装后 打开cmd的dos窗口 运行node ...

  2. py-faster-rcnn(running the demo): ubuntu14.04+caffe+cuda7.5+cudnn5.1.3+python2.7环境搭建记录

    第一次写博客,以此纪念这几天安装caffe,跑faster-rcnn的血泪史.在此特别感谢网络各路大神,来自全球各地,让我能从中汲取营养,吸取经验,总结规律. faster-rcnn分为matlab版 ...

  3. KBMMW 4.93.10 发布

    例行更新,主要是bugfix. 4.93.10 June 4 2016 Important notes (changes that may break existing code) ========= ...

  4. WPS for Linux,系统缺失字体

    启动WPS for Linux后,出现提示"系统缺失字体" . 出现提示的原因是因为WPS for Linux没有自带windows的字体,只要在Linux系统中加载字体即可. 具 ...

  5. HDOJ(2056)&HDOJ(1086)

    Rectangles    HDOJ(2056) http://acm.hdu.edu.cn/showproblem.php?pid=2056 题目描述:给2条线段,分别构成2个矩形,求2个矩形相交面 ...

  6. 基于AQS的锁

    锁分为独占锁和共享锁,它们的主要实现都是依靠AbstractQueuedSynchronizer,这个类只提供一系列公共的方法,让子类来调用.基于我了解不深,从这个类的属性,方法,和独占锁的获取方式去 ...

  7. sort详解2

    linux sort 命令详解 sort是在Linux里非常常用的一个命令,管排序的,集中精力,五分钟搞定sort,现在开始! 1 sort的工作原理 sort将文件的每一行作为一个单位,相互比较,比 ...

  8. AJAX原生JS代码

    var http_request = false;function send_request(method,url,content,responseType,callback){ http_reque ...

  9. 使用Docker Image跑Gitlab

    下载gitlab docker镜像 docker pull gitlab/gitlab-ce:latest 启动gitlab服务 sudo docker run --detach \ --hostna ...

  10. php多条件搜索

    PHP多条件查询 December : Tuesdayby 小屋 在我们的网站设计过程中,经常会用到多条件查询,本文的源码是一个二手房屋查询的例子.在本例中,我们要实现能够通过地理位置,物业类型,房屋 ...