go分析和創(chuàng)建JSON

package main

import (
    "fmt"
    "encoding/json"
    "os"
    "io/ioutil"
    "io"
)

type Post struct {
    Id int `json:"id"`
    Content string `json:"content"`
    Author Author  `json:"author"`
    Comments []Comment `json:"comments"`
}

type Author struct {
    Id int `json:"id"`
    Name string `json:"name"`
}

type Comment struct {
    Id int `json:"id"`
    Content string `json:"content"`
    Author string `json:"author"`
}

func main()  {
    //創(chuàng)建JSON
    post :=Post {
        Id: 1,
        Content:"Hello World!",
        Author: Author{
            Id: 2,
            Name: "shao tong",
        },
        Comments: []Comment{
            Comment{
                Id:3,
                Content:"Have a great day!",
                Author:"Adam",
            },
            Comment{
                Id:4,
                Content:"How are tyyou today?!",
                Author:"Betty",
            },
        },
    }

    //方法一:
    output,err := json.MarshalIndent(&post,"","\t\t")
    if err != nil {
        fmt.Println("Error marshalling to JSON:",err)
        return
    }
    err = ioutil.WriteFile("post1.json",output,0644)
    if err != nil {
        fmt.Println("Error writing JSON to file:",err)
        return
    }

    //方法二:
    jsonFile,err :=os.Create("post2.json")
    if err != nil {
        fmt.Println("Error creating JSON file:",err)
        return
    }
    encoder :=json.NewEncoder(jsonFile)
    err = encoder.Encode(&post)
    if err != nil {
        fmt.Println("Error encoding JSON to file:",err)
        return
    }

    //分析JSON
    //方法一:
    jsonFile1,err := os.Open("post.json")
    if err != nil {
        fmt.Println("Error opening JSON file",err)
        return
    }
    defer jsonFile1.Close()
    jsonData1,err :=ioutil.ReadAll(jsonFile1)
    if err != nil {
        fmt.Println("Error reading JSON data :",err)
        return
    }
    var post1 Post
    json.Unmarshal(jsonData1, &post1)
    fmt.Println(post1)

    //方法二:
    decoder :=json.NewDecoder(jsonFile1)
    for {
        var post Post
        err :=decoder.Decode(&post)
        if err == io.EOF {
            break
        }
        if err != nil {
            fmt.Println("Error decoding JSON:",err)
            return
        }
        fmt.Println(post)
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末雀费,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子昼接,更是在濱河造成了極大的恐慌俯萎,老刑警劉巖战得,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件担映,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡灶搜,警方通過查閱死者的電腦和手機(jī)邀桑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門施籍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人概漱,你說我怎么就攤上這事丑慎。” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵竿裂,是天一觀的道長(zhǎng)玉吁。 經(jīng)常有香客問我,道長(zhǎng)腻异,這世上最難降的妖魔是什么进副? 我笑而不...
    開封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮悔常,結(jié)果婚禮上影斑,老公的妹妹穿的比我還像新娘。我一直安慰自己机打,他們只是感情好矫户,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著残邀,像睡著了一般皆辽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上芥挣,一...
    開封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天驱闷,我揣著相機(jī)與錄音,去河邊找鬼空免。 笑死空另,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蹋砚。 我是一名探鬼主播扼菠,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼都弹!你這毒婦竟也來了娇豫?” 一聲冷哼從身側(cè)響起匙姜,我...
    開封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤畅厢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后氮昧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體框杜,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年袖肥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了咪辱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡椎组,死狀恐怖油狂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤专筷,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布弱贼,位于F島的核電站,受9級(jí)特大地震影響磷蛹,放射性物質(zhì)發(fā)生泄漏吮旅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一味咳、第九天 我趴在偏房一處隱蔽的房頂上張望庇勃。 院中可真熱鬧,春花似錦槽驶、人聲如沸责嚷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽再层。三九已至,卻和暖如春堡纬,著一層夾襖步出監(jiān)牢的瞬間聂受,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工烤镐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蛋济,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓炮叶,卻偏偏與公主長(zhǎng)得像碗旅,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子镜悉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容