Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 正确删除Go中的第二个json.Marshal_Mysql_Json_Rest_Go - Fatal编程技术网

Mysql 正确删除Go中的第二个json.Marshal

Mysql 正确删除Go中的第二个json.Marshal,mysql,json,rest,go,Mysql,Json,Rest,Go,无论出于何种原因,我在尝试在Go with MySQL存储中构建一个简单的RESTAPI时,添加了第二个json.Marshal,它是双重编码,并使用转义引号等生成结果。我可以去掉引号,但我想我不应该有两个json。首先处理发生的事情 这个问题有两个方面-1这是正确的删除倾向于第一个,因为结果应该是更大的数组和2如何保持代码删除后的功能?我不能简单地删除第一个,因为我开始遇到各种各样的错误。以下是代码的相关部分: type Volume struct { Id int Name

无论出于何种原因,我在尝试在Go with MySQL存储中构建一个简单的RESTAPI时,添加了第二个json.Marshal,它是双重编码,并使用转义引号等生成结果。我可以去掉引号,但我想我不应该有两个json。首先处理发生的事情

这个问题有两个方面-1这是正确的删除倾向于第一个,因为结果应该是更大的数组和2如何保持代码删除后的功能?我不能简单地删除第一个,因为我开始遇到各种各样的错误。以下是代码的相关部分:

type Volume struct {
    Id int
    Name string
    Description string
}
。。。跳过前面

var result = make([]string,1000)
switch request.Method {
    case "GET":

        name  := request.URL.Query().Get("name")

        stmt, err := db.Prepare("select id, name, description from idm_assets.VOLUMES where name = ?")
            if err != nil{
                fmt.Print( err );
            }

            rows, err := stmt.Query(name)

            if err != nil {
                fmt.Print( err )
            }

            i := 0

            for rows.Next() {
                var name string
                var id int
                var description string
                err = rows.Scan( &id, &name, &description )
                if err != nil {
                    fmt.Println("Error scanning: " + err.Error())
                        return
                }
                volume := &Volume{Id: id,Name:name,Description: description}
这是第一个json.Marshal

                b, err := json.Marshal(volume)
                    fmt.Println(b)
                if err != nil {
                    fmt.Println(err)
                    return
                }
                result[i] = fmt.Sprintf("%s", string(b))
                i++
            }
        result = result[:i]
default:
    }
json, err := json.Marshal(result)
if err != nil {
    fmt.Println(err)
    return
}
fmt.Fprintf(response,"'%v'\n",string(json) )
…将PUT、DELETE等的其他情况跳过到第二个json.Marshal

                b, err := json.Marshal(volume)
                    fmt.Println(b)
                if err != nil {
                    fmt.Println(err)
                    return
                }
                result[i] = fmt.Sprintf("%s", string(b))
                i++
            }
        result = result[:i]
default:
    }
json, err := json.Marshal(result)
if err != nil {
    fmt.Println(err)
    return
}
fmt.Fprintf(response,"'%v'\n",string(json) )
将结果转换为*卷的数组

然后附加新的卷记录:


最后使用Marshalresult获得JSON结果。

非常感谢。这确实让我走上了正确的方向。我以前曾尝试附加到切片,但操作不正确,在与此进行比较之前无法看到错误。谢谢