在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
什么是json,json的标准??
现在越来越多的项目和开发插件等默认都会支持和使用json数据格式,作为数据保持、传输的一种方式。 什么是 JSON ? JSON建构于两种结构: 1.“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
JSON具有以下这些形式: 对象是一个无序的“‘名称/值'对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值' 对”之间使用“,”(逗号)分隔。 其中,属性的值可以是数组,也可以是一个对象。 数组形式: 数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔 _________________ 对比转换为 [ ]btye (字节序)后的差异,看下是哪里的问题,找到原因!!
也可以反推: a.Name = "aaaaaa\"123" ----------------------------- package main import ( "log" "encoding/json" ) func main() { type stu struct { Name string } var a stu a.Name = "aaaaaa\"123" b, e := json.Marshal(a) log.Println("---:", b, string(b), e) //str := "{\"Name\":\"aaaaaa\"123\"}" //要加 \\\" 才可以 str := "{\"Name\":\"aaaaaa\\\"123\"}" //要加 \\\" 才可以 log.Println("---:", []byte(str), str) var ss stu _ = json.Unmarshal([]byte(str), &ss) log.Println("ss:", str) log.Println("unmar: ",ss) var asc byte = 'a' log.Println(asc) }
----------------------- 1、双引号里的字符串可以转义,不能换行 2、反引号里面的内容不能转义,可以换行,一般用于SQL语句,html等大段内容,以及正则表达式的使用 3、单引号,一般只能用来包裹一个字节的ASCII码字符,例如: ------------------------
golang中json格式有大小写要求,json中小写键名会无法导出,结构体小写也无法导出json对应键名。 --------------------------------- golang json marshal unmarshal 字段的大小写问题: package main import ( "log" "encoding/json" ) func main() { type People struct { Lac string Lng string `json:"ffs"` } type stu struct { Name string S []People } var a stu a.Name = "aaaaaa\"123" var s People s.Lac = "lac" s.Lng = "lng" a.S = append(a.S, s) b, e := json.Marshal(a) log.Println("---:", b, string(b), e) ////str := "{\"Name\":\"aaaaaa\"123\"}" //要加 \\\" 才可以 //str := "{\"Name\":\"aaaaaa\\\"123\"}" //要加 \\\" 才可以 str := "{\"Name\":\"aaaaaa\\\"123\",\"S\":[{\"lac\":\"lac123\",\"fFs\":\"lng123\"}]}" // 这里ffs , 和fFs都可以,这里不区分大小写! log.Println("---:", []byte(str), str) var ss stu _ = json.Unmarshal([]byte(str), &ss) log.Println("ss:", str) log.Println("unmar: ",ss) var asc byte = 'a' log.Println(asc) }
|
请发表评论