### ``app.json``文件原始内容
```
[
{
"model": "开发模式",
"version": "1.0",
"date_now": "2018-08-24 18:22:46",
"branch": "master",
"commit_id": "178d92c",
"is_used": false,
"is_status": true
}
]
```
### 目标是:更新app.json文件中的``is_used``字段,然后覆盖原始内容
```
switchStart(av)
data, err := json.MarshalIndent(av, "", " ")
if err != nil {
log.Fatalln(err)
}
jsonWrite(file, data)
```
#### ``switchStart(av)``后
##### av变量是结构体,输出如下:
``[{开发模式 1.0 2018-08-24 18:22:46 master 178d92c true true}]``
##### data输出如下:
```
[
{
"model": "开发模式",
"version": "1.0",
"date_now": "2018-08-24 18:22:46",
"branch": "master",
"commit_id": "178d92c",
"is_used": true,
"is_status": true
}
]
```
#### 所用函数
```
//写入json文件
func jsonWrite(fp *os.File, data []byte) {
_, err := fp.Write(data)
if err != nil {
log.Fatal(err)
}
}
//修改运行版本状态
func switchStart(appV []AppVersion) {
count := len(appV)
for i := 0; i < count; i++ {
if appV[i].IsStatus == true {
appV[i].IsUsed = true
} else {
appV[i].IsUsed = false
}
}
}
```
### ``app.json``文件却是这样,多了一个**]**符号:
```
[
{
"model": "开发模式",
"version": "1.0",
"date_now": "2018-08-24 18:22:46",
"branch": "master",
"commit_id": "178d92c",
"is_used": true,
"is_status": true
}
]]
```
### 我很纳闷,希望大家帮我看下,问题所在!谢谢大家
我暂时发现了,是``fp.Write(data)``方法的问题,我读取的时候用的是ioutil包,最后我写入的时候也换成了ioutil包,就ok了
#4
更多评论
你用什么方法输出data的?如果是fmt
```golang
fmt.Println(string(data))
```
结果应该是
```golang
{
"model": "开发模式",
"version": "1.0",
"date_now": "2018-08-24 18:22:46",
"branch": "master",
"commit_id": "178d92c",
"is_used": true,
"is_status": true
}
```
没`[]`的。
#1