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