golang进行json字符串转化
json
适用于现代 C++ 的 JSON。
项目地址:https://gitcode.com/gh_mirrors/js/json

·
map转化为json
package main import ( "encoding/json" "log" "fmt" ) func main() { user := make(map[string]string) user["username"]="kongyixueyuan" user["address"]="北京" jsonStr, err := json.Marshal(user) if err!=nil{ log.Fatal(err) } fmt.Printf("%s",jsonStr) }
array转化为json
package main import ( "encoding/json" "log" "fmt" ) func main() { personArr := [3]string{"小李","王二狗","老毕"} jsonStr, err := json.Marshal(personArr) if err!=nil{ log.Fatal() } fmt.Printf("%s\n",jsonStr) }
[3]string改为[3]interface{}也可以转换成功
package main import ( "encoding/json" "log" "fmt" ) func main() { personArr := [3]interface{}{"小李","王二狗","老毕"} jsonStr, err := json.Marshal(personArr) if err!=nil{ log.Fatal() } fmt.Printf("%s\n",jsonStr) }
struct转json
package main import ( "fmt" "encoding/json" "log" ) type Person struct { UserName string Age int } func main() { str:=Person{"王二狗",30} jsonStr, err := json.Marshal(str) if err!=nil{ log.Fatal(err) } fmt.Println(string(jsonStr)) }
注意,结构体属性必须首字母大字,否则转化不了
type Person struct { UserName string `json:"aaa"` Age int `json:"bbb"` }
结构体属性名可以设置别名 只需要在属性类型后输入'json:"别名"' 即可
输出结果:{"aaa":"王二狗","bbb":30}
如果哪个结构体属性不想显示了。可以用'json:"-"'
type Person struct { UserName string `json:"aaa"` Age int `json:"-"` }
输出结果:{"aaa":"王二狗"}
以后开发也习惯把所有结构体首字母大写。
嵌套结构体转换
package main import ( "fmt" "encoding/json" "log" ) type Address struct { Province string City string Number int } type Person struct { UserName string `json:"aaa"` Age int `json:"-"` Addrs Address } func main() { str:=Person{"王二狗",30,Address{"北京","海淀区",1803}} jsonStr, err := json.Marshal(str) if err!=nil{ log.Fatal(err) } fmt.Println(string(jsonStr)) }
打印结果:
{"aaa":"王二狗","Addrs":{"Province":"北京","City":"海淀区","Number":1803}} 如果Address字符有名字是父子关系
如果把名字删除就变成兄弟关系了
type Person struct { UserName string `json:"aaa"` Age int `json:"-"` Address }
输出结果:
{"aaa":"王二狗","Province":"北京","City":"海淀区","Number":1803}
把json字符串格式化,用+号去填写,不足的用-号填写
package main import ( "fmt" "encoding/json" "log" ) type Address struct { Province string City string Number int } type Person struct { UserName string `json:"aaa"` Age int `json:"-"` Address } func main() { str := Person{"王二狗", 30, Address{"北京", "海淀区", 1803}} jsonStr, err := json.Marshal(str) if err != nil { log.Fatal(err) } fmt.Println(string(jsonStr)) jsonStr2, err := json.MarshalIndent(str, "+", "-") fmt.Println(string(jsonStr2)) }
输出结果:
{
+-"aaa": "王二狗",
+-"Province": "北京",
+-"City": "海淀区",
+-"Number": 1803
+}
这个挺有用,就是如果从服务器获取的json格式很乱,没法看。我们就可以用这个方法格式化成好看些。
将json转换成map
package main import ( "encoding/json" "fmt" ) func main() { str:="{\"address\":\"北京\",\"username\":\"kongyixueyuan\"}" myMap:=make(map[string]string) json.Unmarshal([]byte(str),&myMap) fmt.Println(myMap) }
输出:
map[address:北京 username:kongyixueyuan]




适用于现代 C++ 的 JSON。
最近提交(Master分支:5 个月前 )
34665ae6
binary -> binary_t
Signed-off-by: Robert Chisholm <robert.chisholm@sheffield.ac.uk> 22 天前
f3dc4684
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.9 to 3.28.10.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/9e8d0789d4a0fa9ceb6b1738f7e269594bdd67f0...b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d)
---
updated-dependencies:
- dependency-name: github/codeql-action
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 28 天前
更多推荐
所有评论(0)