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

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.

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

报告相同问题?

悬赏问题

  • ¥15 Python3.5 相关代码写作
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)