正确创建一个JSON文件并从中读取

我正在尝试使用Golang创建JSON文件。 我对JSON文件和创建这些文件知之甚少,但是我创建了一个创建它们的程序。 在此程序中,它从网站获取表单数据,然后将数据放入JSON结构中,然后将信息添加到文件夹中。 我这里有2个数据部分。 我在发生错误的地方加上了注释</ p>

  {
“ cl”:“ [v1]”,
“ gr”:“ [A]” ,
“ cr”:“ [8]”
} //预计文件结尾
{
“ cl”:“ [v2]”,
“ gr”:“ [Z]”,
“ cr”:“ [8]”
}
</ code> </ pre>

所以我的问题是(1)错误是什么意思,以及(2)我如何/如何 使用Golang创建JSON文件时解决此问题? 如果需要,我可以提供Golang。 </ p>
</ div>

展开原文

原文

I am trying to create a JSON file with Golang. I have little knowledge of JSON Files and creating them but I have created a program that creates them. In this program, it takes form data from a website and then puts the data into a JSON struct, then adds the information into a folder. I have the 2 sections of data here. I put a comment where the error occurs along with the error

{
    "cl":"[v1]",
    "gr":"[A]",
    "cr":"[8]"
} // End Of File Expected
{
    "cl":"[v2]",
    "gr":"[Z]",
    "cr":"[8]"
}

So my questions are (1) What does the error mean, and (2) How/can I fix this when creating a JSON file with Golang? I can supply the Golang if needed.

duanji5569
duanji5569 通过流,您是说一堆不断增加的价值吗?然后,我打算有一个值流,我正在存储用户数据。
接近 3 年之前 回复
duan4369
duan4369 [{âclâ€:â€[v1]â,...},{“clâ€:â€[v2]â€,...}]
接近 3 年之前 回复
doutang1884
doutang1884 您能给我看一个例子吗?我在网上浏览了很多,但我很困惑。@Joe
接近 3 年之前 回复
douzhi8244
douzhi8244 那不是有效的JSON。如果您有一组项目,则可能需要将它们放在一个数组中,每个元素用逗号分隔。
接近 3 年之前 回复

1个回答

So other than the json not being formatted correctly, here is an example of how to create json using a struct and json struct tags.

Proper JSON

[ {key:value, key value}, {key:value, key value} ]

What you have is {key:value, key value} {key:value, key value}

Which is two separate objects instead of one object in an array.

If you are reading this from file and the data is returned like your example then you might have to split on the newline to separate each object and unmarshal them separately.

Otherwise the below should server as an example.

package main

import (
    "encoding/json"
    "fmt"
    "io/ioutil"
    "strconv"
)

type j struct {
    Cl []string `json:"cl"`
    Gr []string `json:"gr"`
    Cr []string `json:"cr"`
}

func main() {
    // create an instance of j as a slice
    var data []j
    // using a for loop for create dummy data fast
    for i := 0; i < 5; i++ {
        v := strconv.Itoa(i)
        data = append(data, j{
            Cl: []string{"foo " + v},
            Gr: []string{"bar " + v},
            Cr: []string{"foobar " + v},
        })
    }

    // printing out json neatly to demonstrate
    b, _ := json.MarshalIndent(data, "", " ")
    fmt.Println(string(b))

    // writing json to file

    _ = ioutil.WriteFile("file.json", b, 0644)

    // to append to a file
    // create the file if it doesn't exists with O_CREATE, Set the file up for read write, add the append flag and set the permission
    f, err := os.OpenFile("/var/log/debug-web.log", os.O_CREATE|os.O_RDWR|os.O_APPEND, 0660)
    if err != nil {
        log.Fatal(err)
    }
    // write to file, f.Write()
    f.Write(b)

    // if you are doing alot of I/O work you may not want to write out to file often instead load up a bytes.Buffer and write to file when you are done... assuming you don't run out of memory when loading to bytes.Buffer


}
doulinduansh14199
doulinduansh14199 从os.FileOpen中除去| OS.O_APPEND。 那只是一个标志。 其余两个标志用于创建文件(如果文件不存在)以及使文件打开以进行读取和写入。 没有添加标志。 写应该覆盖数据
接近 3 年之前 回复
dora1989
dora1989 谢谢。 我想我已经拥有了,但是我没有覆盖文件。 我只是一直追加到文件。
接近 3 年之前 回复
dongxiao3694
dongxiao3694 我的答案已更新为追加。 现在,如果加载到文件中的对象是json对象的数组,则必须做的稍有不同。 您必须打开文件,解组字节直到正确的结构。 追加到该结构并使用编组后的内容覆盖该文件。
接近 3 年之前 回复
dta25920
dta25920 我也很好奇您如何将数据追加到文件中。 :)
接近 3 年之前 回复
duanlipeng4136
duanlipeng4136 我再加一个例子
接近 3 年之前 回复
douci2022
douci2022 您将如何追加到文件? 我尝试取消封送处理,添加数据,然后再次封送处理,但是它只是追加了一个全新的数据集。
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐