Hello,

You keep appending json objects to your file, which produces invalid json 
after the first item.
You either need to produce valid json, for instance by putting your items 
into an array, or use a streaming json parser that parses items 
individually.
I have changed your example to perform the last option and here it 
is: https://play.golang.org/p/n6fWA8bTAb.

Note that you should probably return errors instead of bailing out right 
away, but it all depends on what you are trying to do.

P.

Le lundi 20 mars 2017 23:27:15 UTC+1, Paulius Daubaris a écrit :
>
> Hello, I am writing this application, where I can store some reminders for 
> myself in CLI to not forget something important.
>
> My question is how can I save my input data or lets say what's the best 
> way to do so? I've tried JSON, but it didnt work out, primarily because I 
> cant really figure it out. Anyhow if JSON is the way to go, I've been stuck 
> and it got me really frustrated.
>
> Example:
>
> The function which creates new reminder:
>
> func newReminder() {
>     checkFile() //Simple check if file is not in the directory it creates 
> one
>
>     var text string
>     date := time.Now()
>     dateString := date.String()
>     file, err := os.OpenFile("rem.json", os.O_RDWR|os.O_APPEND, 
> os.ModePerm)
>
>     if err != nil {
>         log.Fatal(err)
>     }
>
>     fmt.Print("Description: ")
>
>     scanner := bufio.NewScanner(os.Stdin)
>     if ok := scanner.Scan(); ok {
>         text = scanner.Text()
>     }
>
>     reminder := &Name{dateString[:19], text}
>     newReminder, _ := json.Marshal(&reminder)
>
>     file.Write(newReminder)
>     file.Close()
> }
>
> Here everything is working fine. I execute it with ./main -n, write new 
> reminder, display it and it goes well. Although when I add another reminder 
> and try to display it i get an error: invalid character '{' after 
> top-level value
> Its because when I cat out my json file it looks like this :
>
> {"Date":"2017-03-20 10:46:48","Description":"new"}{"Date":"2017-03-20 
> 10:46:51","Description":"new .go"}
>
> So basically it has no root node. So again, is there a way to wrap it up? If 
> the code is confusing here's the whole. https://play.golang.org/p/d0mlZw3ZH-
>
> Thanks in advance.
>  
>
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to