# 說文解字代碼庫數據格式說明文檔 [說文解字](http://www.shuowen.org "說文解字") 代碼庫創建的目的就是讓更多朋友能夠直接改進內容和勘誤,因此,有必要將文件的格式以及編輯需要注意的事項作一些說明。 ## 格式說明 所有文件都是以 JSON 格式存儲,關於 JSON,可以參考 http://json.org 上面的說明: > JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 > JSON建构于两种结构: > - “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。 > - 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。 下面結合 [說文解字](http://www.shuowen.org "說文解字") 代碼庫中的內容做一些簡單說明: 比如 “[帝](http://www.shuowen.org/view/7)” 字,代碼庫中的內容如下, { "id": 7, "wordhead": "帝", "explanation": "諦也。王天下之號也。从丄朿聲。", "volume": "01", "radical": "丄", "pronunciation": "都計切", "variants": [ { "wordhead": "𢂇", "explanation": "古文帝。古文諸丄字皆从一,篆文皆从𠄞。𠄞,古文上字。䇂示辰龍童音章皆从古文丄。", "seal_character": "三" } ], "seal_character": "丈", "pinyin": "di", "pinyin_full": "dì", "components": [ "一", "上", "朿" ], "xuan_note": "", "kai_note": "", "duan_notes": [ { "explanation": "諦也。", "note": "見春秋元命苞、春秋運斗樞。毛詩故訓傳曰。審諦如帝。" }, { "explanation": "王天下之號。从二。朿<>聲。", "note": "都計切。古音第十六部。" }, { "explanation": "古文帝。古文諸丄字皆从一。篆文皆从𠄞。𠄞古文上字。", "note": "古文从一。小篆从古文上者。古今體異。必云𠄞古上字者。明非二字也。徐鍇曰。古文上兩畫、上短下長。一二之二、則兩畫齊等。䇂俗本䇂下有言。非也。言从䇂。舉䇂可以包言。" }, { "explanation": "示辰龍童音章皆从古文上。", "note": "古文示作𥘅。古文禮作𠃞。古文辰作𠨷。此古文从一、小篆从𠄞之證。然則古文以一爲𠄞。六書之假借也。" } ], "indexes": [ "帝", "𢂇" ] } 結合 JSON 結構的定義,我們可以看到,上面的代碼主要有 2 種格式, 1. 左大括號 “{” 和右大括號 “}” 包含的內容,這種結構可以稱爲 “對象“,如果一個人就是一個對象,那麼這個人的姓名,年齡就可以理解爲這個人的屬性,也叫做 “「名稱/值」對” 。 2. 左中括號 “[” 和右中括號 “]” 包含的內容,這種結構可以理解爲 “列表”,如果還拿人來舉例,那麼這個人的愛好就可以用一個列表來表示。 如果用 JSON 來描述上面人的例子,結果如下, { "姓名": { "姓": "張", "名": "三" }, "年齡": 36, "愛好": ["書法", "編程", "發呆"] } 從上面的例子我們可以看到, 1. 所有的字符串都需要用雙引號 「""」括起來。 2. 這2種結構可以被嵌套,比如姓名下面嵌套了另外一個對象,這個對象包含了 “姓” 和 “名” 這2個屬性。 2. 屬性的 “名稱” 和 “值” 之間是以 冒號「:」分隔 3. 多個屬性之間是以 逗號「,」 分隔,最後一個屬性不需要加 逗號「,」,因爲後面沒有其他屬性了,比如 “姓名” 這個對象的 “姓” 的值 “張” 後面有 逗號「,」,因爲後面還有另外一個屬性,而 “名” 的值 “三” 後面就沒有 逗號「,」,因爲後面沒有其他屬性了。 4. 列表的多個值之間也是用 逗號「,」分隔,最後一個值不需要加 逗號「,」。 內容中的空格不是必須的,但是爲了保證層級關係清楚,會給每個層級增加一個縮進,通常是 4 個空格字符。 ## 數據格式中屬性的含義 { "id": "字頭編號", "wordhead": "字頭", "explanation": "說文解字對於字頭的解釋", "volume": "字頭所在的卷數", "radical": "字頭所屬的說文部首", "pronunciation": "反切", "variants": [ { "wordhead": "重文1的字頭", "explanation": "說文解字對於重文1字頭的解釋", "seal_character": "重文1的小篆字型(此屬性無須修改)" }, { "wordhead": "重文2的字頭", "explanation": "說文解字對於重文2字頭的解釋", "seal_character": "重文2的小篆字型(此屬性無須修改)" }, ... 更多重文,以逗號分隔,最後一個重文無須加逗號 { "wordhead": "重文 N 的字頭", "explanation": "說文解字對於重文 N 字頭的解釋", "seal_character": "重文 N 的小篆字型(此屬性無須修改)" } ], "seal_character": "字頭的小篆字型(此屬性無須修改)", "pinyin": "無聲調的拼音", "pinyin_full": "包含聲調的拼音", "components": [ "構件1,以逗號分隔", "構件2,以逗號分隔", "最後一個構件不需要加逗號" ], "xuan_note": "徐鉉註釋", "kai_note": "徐楷註釋", "duan_notes": [ { "explanation": "段玉裁說文解字注中摘錄的說文解字原文1", "note": "段玉裁說文解字注中對說文解字原文1的註釋" }, { "explanation": "段玉裁說文解字注中摘錄的說文解字原文2", "note": "段玉裁說文解字注中對說文解字原文2的註釋" }, ... 更多段玉裁說文解字注,以逗號分隔,最後一個無須加逗號 { "explanation": "段玉裁說文解字注中摘錄的說文解字原文 N", "note": "段玉裁說文解字注中對說文解字原文 N 的註釋" } ], "indexes": [ "字頭搜索索引1,比如搜索“餘”和“余”都能找到“餘”,那我們就稱“餘”和“余”是“餘”的索引", "字頭搜索索引2", ... 更多字頭索引,最後一個無須加逗號 "字頭搜索索引 N" ] } 特別需要注意的是, 1. 最後一個「名稱/值」對 和列表的最後一個內容都不能加逗號 2. 字符串必須要用雙引號括起來 也可以在編輯完內容後,使用線上的一些 JSON 驗證工具確認一下格式是否正確。比如: https://www.json.cn/