duanqian3953 2017-03-20 09:20
浏览 66
已采纳

将json成员字段包装为对象

My objective is to add fields to json on user request.

Everything is great, but when displaying the fields with

fmt.Printf("%s: %s
", content.Date, content.Description)

an error occurs:

invalid character '{' after top-level value

And that is because after adding new fields the file looks like this:

{"Date":"2017-03-20 10:46:48","Description":"new"}
{"Date":"2017-03-20 10:46:51","Description":"new .go"}

The biggest problem is with the writting to file

reminder := &Name{dateString[:19], text} //text - input string
newReminder, _ := json.Marshal(&reminder)

I dont really know how to do this properly

My question is how should I wrap all member fields into one object? And what is the best way to iterate through member fields?

The code is available here: https://play.golang.org/p/NunV_B6sud

  • 写回答

2条回答 默认 最新

  • dongru2019 2017-03-21 12:27
    关注

    So after some research, people in the go-nuts group helped me and suggested me to use a streaming json parser that parses items individually.

    So I needed to change my reminder listing function:

    func listReminders() error {
        f, err := os.Open("rem.json")
        if err != nil {
            return err
        }
        dec := json.NewDecoder(f)
        for {
            var content Name
            switch dec.Decode(&content) {
            case nil:
                fmt.Printf("%#v
    ", content)
            case io.EOF:
                return nil
            default:
                return err
            }
        }
    }
    

    Now everything works the way I wanted.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿