javascript json转为 go struct 小工具代码
/**
* 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 小工具代码的更多相关文章
- Python实现Json结构对比的小工具兼谈编程求解问题
摘要: 通过使用Python编写一个解析Json结构对比的小工具,来提炼编程求解的通用步骤和技巧. 难度: 初级 先上代码. jsondiff.py #!/usr/bin/python #_*_enc ...
- 给json格式化的一个小工具
var glob = require("glob") // options is optional var fs=require("fs") glob(&quo ...
- JSON生成c#类代码小工具
JSON生成c#类代码小工具 为什么写这么个玩意 最近的项目中需要和一个服务端程序通讯,而通讯的协议是基于流行的json,由于是.net,所以很简单的从公司代码库里找到了Newtonsoft.dll( ...
- 一个Json结构对比的Python小工具兼谈编程求解问题
先上代码. jsondiff.py #!/usr/bin/python #_*_encoding:utf-8_*_ import argparse import json import sys rel ...
- js 创建书签小工具之理论
我们一直在寻找增加浏览体验的方法,有的方法众所周知,有的则鲜为人知.我原本认为书签小工具属于后者,非常令人讨厌的东西.令我非常懊恼的是我发现在这个问题上我完全是错误的.它并不是令人厌烦的,而是以用户为 ...
- OpenCV探索之路(二十五):制作简易的图像标注小工具
搞图像深度学习的童鞋一定碰过图像数据标注的东西,当我们训练网络时需要训练集数据,但在网上又没有找到自己想要的数据集,这时候就考虑自己制作自己的数据集了,这时就需要对图像进行标注.图像标注是件很枯燥又很 ...
- html小工具——文章注释编辑器
在网上阅读文章时,读者时常会想针对某段文字写一些自己的感想,可惜大部分阅读网站并不提供这样的功能,读者往往只能将文本复制到本地或在线的编辑器中编辑注释,之后如果想在其他地方回顾这些注释也必须先本地安装 ...
- Python趣味实用小工具
代码地址如下:http://www.demodashi.com/demo/12918.html python 趣味实用小工具 概述 用python实现的三个趣味实用小工具: 图片转Execl工具 , ...
- JavaScript 相关的工具代码
博客地址:https://ainyi.com/49 记录一些数据处理需要的方法工具代码 持续更新中... 时间戳转与日期格式相互转换 时间戳转换成日期格式 function timestampToTi ...
随机推荐
- cs11_c++_lab6
expressions.hh #ifndef EXPRESSIONS_HH #define EXPRESSIONS_HH #include "environment.hh" #in ...
- 转 LoadRunner 技巧之THML 与 URL两种录制模式分析
Loadrunner的Virtual User Generator 提供人脚本的录制功能,对于初学者来说,这大大的降低了编写脚本的门槛,loadrunner提供两种录制脚本的方式:Html_based ...
- tp框架总结(四)
一 ajax的返回 调用实例: $this->ajaxReturn(返回数据,提示信息,操作状态); $this->ajaxReturn(返回数据,‘json’); js: <scr ...
- 网络存储技术(3) based on zt
各种术语介绍 一 ESCON 1991 年,IBM公司在S/390服务器中推出了ESCON(Enterprise System Connection)技术.它是基于光纤介质,最大传输速率达1 ...
- 前端---DOM
一.介绍: http://www.cnblogs.com/wupeiqi/articles/5643298.html 什么是DOM? DOM字面意思是文档对象模型,DOM将网页内的元素与内容呈现为一个 ...
- Win8.1无法安装.NET Framework 3.5的解决办法
这个问题纠结了我很多天,恢复系统也没用,差点儿就重装Win8,现在终于解决了,你也来试试吧! 机型:台电X89 系统:Win8.1 with bing 故障:在未安装.NET Framework 3. ...
- CSS深入研究:display的恐怖故事解密(2) - table-cell
上集<CSS深入研究:display的恐怖故事解密(1) - display-inline>已经把display的属性列表拉出来溜了,发现在这个属性恐怖面貌其实都是脆弱的伪装.除了部分常用 ...
- 16.2.2 Space Needed for keys
myisam表使用btree索引,可以粗略计算出索引文件的大小,使用(key_length+4)/0.67,全部key的总和,全部key被排序顺序插入和表没有被任何压缩的时候,这是最坏的情况 stri ...
- Elasticsearch相关资源
安装介绍 http://www.doc88.com/p-171165797348.html 入门教程 http://www.iteye.com/blogs/subjects/elasticsearch ...
- js弹框3秒后自动消失
开发中有时候会需要最出弹框后,过几秒自动消失的效果,下面给大家分享一下我自己做的一个小案例. 案例中的弹框使用的是bootstrap里面的模态框,实现自动消失则用的是js中的setInterval方法 ...