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 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。