下面是一個json格式數據的示例:python
{ "id":1, "content":"hello world", "author":{ "id":2, "name":"userA" }, "published":true, "label":[], "nextPost":null, "comments":[ { "id":3, "content":"good post1", "author":"userB" }, { "id":4, "content":"good post2", "author":"userC" } ] }
用註釋分析這個json:json
{ # 對象容器,下面全是這個對象中的屬性。注意key全都是字符串 "id":1, # 文章ID號,元素,value類型爲number "content":"hello world", # 文章內容 "author":{ # 子對象,文章做者 "id":2, # 做者ID "name":"userA" # 做者名稱,注意子容器結束,沒有逗號 }, "published":true, # 文章是否發佈,布爾類型 "label":[], # 文章標籤,沒有給標籤,因此空數組 "nextPost":null, # 下一篇文章,是對象,由於沒有,因此爲null "comments":[ # 文章評論,由於可能有多條評論,每條評論都是一個對象結構 { # 對象容器,表示評論對象 "id":3, # 評論的ID號 "content":"good post1", # 評論的內容 "author":"userB" # 評論者 }, { "id":4, "content":"good post2", "author":"userC" } ] }
通常來講,json格式轉換成語言中的數據結構時,有如下幾個比較通用的規則(只是比較普通的方式,並不是必定):數組
例如,上面的示例,轉換成Go中的數據結構時,獲得的結果以下:數據結構
// 使用名稱A代替頂層的匿名對象 type A struct { ID int64 `json:"id"` Content string `json:"content"` Author Author `json:"author"` Published bool `json:"published"` Label []interface{} `json:"label"` NextPost interface{} `json:"nextPost"` Comments []Comment `json:"comments"` } type Author struct { ID int64 `json:"id"` Name string `json:"name"` } type Comment struct { ID int64 `json:"id"` Content string `json:"content"` Author string `json:"author"` }
好比轉換成python中的數據時,獲得的結果以下:工具
from typing import List, Any class Author: id: int name: str def __init__(self, id: int, name: str) -> None: self.id = id self.name = name class Comment: id: int content: str author: str def __init__(self, id: int, content: str, author: str) -> None: self.id = id self.content = content self.author = author # 使用了名稱A代替頂層的匿名對象 class A: id: int content: str author: Author published: bool label: List[Any] next_post: None comments: List[Comment] def __init__(self, id: int, content: str, author: Author, published: bool, label: List[Any], next_post: None, comments: List[Comment]) -> None: self.id = id self.content = content self.author = author self.published = published self.label = label self.next_post = next_post self.comments = comments
quicktype工具,能夠輕鬆地將json文件轉換成各類語言對應的數據結構。post
地址:https://quicktype.ioui
在vscode中有相關插件插件