dqayok7935 2018-04-14 02:11
浏览 1235
已采纳

Golang保存到JSON文件

I am wondering why saving to json file does'nt work as I expected.

-If I input values in the fields and click submit button

-The form will submit and the process function executes

-The process.html renders the input values.

-The input values not saving to the json file.

import (
    "net/http" 
    "html/template" 
    "os" 
    "encoding/json"
)

var tpl *template.Template

type Data struct {
    First string `json:"First"`
    Last string `json:"Last"`
}

func init() {
    tpl = template.Must(template.ParseGlob("templates/*.gohtml"))    
}

func main() {
    http.HandleFunc("/", index);
    http.HandleFunc("/process", process); 
    http.ListenAndServe(":80", nil);   
}

func index(w http.ResponseWriter, r *http.Request) {
    tpl.ExecuteTemplate(w, "index.gohtml", nil)
}

func process(w http.ResponseWriter, r *http.Request) {
    if r.Method != "POST" {
        http.Redirect(w, r, "/", http.StatusSeeOther)
        return
    }

    f, err := os.Open("name.json");
    if err != nil {
        http.Error(w, err.Error(), 500)
        return
    }
    defer f.Close();

    data := new(Data)
    data.First = r.FormValue("first");
    data.Last = r.FormValue("last");

    b, err := json.Marshal(data)
    if err != nil {
        http.Error(w, err.Error(), 500)
        return
    }

    f.Write(b)
    f.Close()

    tpl.ExecuteTemplate(w, "process.gohtml", data)
}
  • 写回答

1条回答 默认 最新

  • dongwen1871 2018-04-14 03:23
    关注

    I believe that os.Open defaults to read-only. I think you want something like os.OpenFile.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 Keil uVision5创建project没反应
  • ¥15 mmseqs内存报错
  • ¥15 vika文档如何与obsidian同步
  • ¥15 华为手机相册里面的照片能够替换成自己想要的照片吗?
  • ¥15 陆空双模式无人机飞控设置
  • ¥15 sentaurus lithography
  • ¥100 求抖音ck号 或者提ck教程
  • ¥15 关于#linux#的问题:子进程1等待子进程A、B退出后退出(语言-c语言)
  • ¥20 web页面如何打开Outlook 365的全球离线通讯簿功能
  • ¥15 io.jsonwebtoken.security.Keys