如何将signedResponse.Data 是一个接口类型,存储的json格式的数组,如何转换为type SignedReceiveResponse struct { Url []string //授权地址 } 结构体定义的变量、
时间: 2024-12-14 07:21:53 浏览: 1
(Swift 5.2)Json转模型数组
如果 `signedResponse.Data` 是一个 JSON 数组,并且你知道它包含的数据可以直接填充到 `SignedReceiveResponse` 结构体的 `Url` 字段,你可以使用 `encoding/json` 包来进行解码操作。首先,你需要一个函数来解析 JSON 数据:
```go
import (
"encoding/json"
)
func parseJsonArrayToStruct(data interface{}, target *SignedReceiveResponse) error {
var jsonData map[string]interface{}
err := json.Unmarshal(data.([]byte), &jsonData) // 解析JSON数据
if err != nil {
return err
}
urls, ok := jsonData["urls"].([]interface{})
if !ok {
return fmt.Errorf("failed to find URLs in the JSON data")
}
target.Url = make([]string, len(urls))
for i, urlInterface := range urls {
target.Url[i], ok = urlInterface.(string)
if !ok {
return fmt.Errorf("failed to convert URL element to string at index %d", i)
}
}
return nil
}
// 使用这个函数
signedReceiveResponse := &SignedReceiveResponse{} // 初始化结构体
err := parseJsonArrayToStruct(signedResponse.Data, signedReceiveResponse)
if err != nil {
// 处理解析错误
log.Println(err)
} else {
// 成功转换,可以进一步使用signedReceiveResponse
}
```
这个函数首先将接口数据解码为一个 JSON 映射 (`map[string]interface{}`),然后找到并提取名为 "urls" 的键对应的值,这是一个 `[]interface{}` 类型的数组。接着,我们将这个数组转换为 `[]string` 并存储在目标结构体中。
阅读全文