封送到JSON时额外的带反斜杠的双引号
我正在玩Go并尝试将结构编码为json。一切都很好,除了当我运行代码时,我在json主体响应中得到一个字符串,我运行的代码如下:封送到JSON时额外的带反斜杠的双引号,json,go,Json,Go,我正在玩Go并尝试将结构编码为json。一切都很好,除了当我运行代码时,我在json主体响应中得到一个字符串,我运行的代码如下: type LocalTimes struct { LocalTimes []DateTime `json:"localTimes"` } type DateTime struct { Timezone string `json:"timezone"` Data string `json:&quo
type LocalTimes struct {
LocalTimes []DateTime `json:"localTimes"`
}
type DateTime struct {
Timezone string `json:"timezone"`
Data string `json:"date"`
Time string `json:"time"`
}
<some code>
responseData, _ := ioutil.ReadAll(apiR.Body)
var apiC map[string]interface{}
json.Unmarshal([]byte(responseData), &apiC)
date, _ := json.Marshal(apiC["date"])
time, _ := json.Marshal(apiC["time"])
dt := DateTime{
utcTime,
string(date),
string(time),
}
localTimes.LocalTimes = append(localTimes.LocalTimes, dt)
<some code>
json.NewEncoder(w).Encode(localTimes)
and the response I get is:
{
"localTimes": [
{
"timezone": "UTC-5",
"date": "\"2020-11-24\"",
"time": "\"07:15:41\""
},
{
"timezone": "UTC-4",
"date": "\"2020-11-24\"",
"time": "\"08:15:43\""
},
{
"timezone": "UTC-3",
"date": "\"2020-11-24\"",
"time": "\"09:15:45\""
},
{
"timezone": "UTC-2",
"date": "\"2020-11-24\"",
"time": "\"10:15:47\""
}
]
}
但在Json上,它变成:
"\" 2020-11-24 \ ""
您正在对这些字符串进行双重编码。当您解组输入时,这些字段将被解码为字符串。然后json封送这些字符串(这将为您提供“值”),然后再次编码它们,即“值” 简单地做:
var date,time string
if value, ok:=apiC["date"]; ok {
date=fmt.Sprint(value)
}
if value, ok:=apiC["time"]; ok {
time=fmt.Sprint(value)
}
可以使用以下命令将接口转换为字符串:
date := apiC["date"].(string)
time := apiC["time"].(string)
您是否缺少类型断言?或者Go现在是否允许将
接口{}
转换为字符串
?
date := apiC["date"].(string)
time := apiC["time"].(string)