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条)

报告相同问题?

悬赏问题

  • ¥20 模型在y分布之外的数据上预测能力不好如何解决
  • ¥15 processing提取音乐节奏
  • ¥15 gg加速器加速游戏时,提示不是x86架构
  • ¥15 python按要求编写程序
  • ¥15 Python输入字符串转化为列表排序具体见图,严格按照输入
  • ¥20 XP系统在重新启动后进不去桌面,一直黑屏。
  • ¥15 opencv图像处理,需要四个处理结果图
  • ¥15 无线移动边缘计算系统中的系统模型
  • ¥15 深度学习中的画图问题
  • ¥15 java报错:使用mybatis plus查询一个只返回一条数据的sql,却报错返回了1000多条