【发布时间】:2018-06-26 14:07:55
【问题描述】:
我想解析一些 JSON,但一个键是字符串或对象。
这是我当前的结构:https://github.com/PhillippOhlandt/pmtoapib/blob/master/CollectionItemRequest.go#L10
type CollectionItemRequest struct {
Url string `json:"url"`
Method string `json:"method"`
Header []RequestHeader `json:"header"`
Body RequestBody `json:"body"`
Description string `json:"description"`
}
这里的“Url”属性不仅可以是字符串,还可以是对象。
我开始为它创建一个涵盖对象案例的自己的结构。
type CollectionItemRequestUrl struct {
Raw string `json:"raw"`
}
type CollectionItemRequest struct {
Url CollectionItemRequestUrl `json:"url"`
Method string `json:"method"`
Header []RequestHeader `json:"header"`
Body RequestBody `json:"body"`
Description string `json:"description"`
}
但是字符串版本将不再起作用。有没有办法让这两种情况都能正常工作并通过 getter 获取价值,比如request.Url.Get?
编辑:
这是 JSON 的两个版本:
"request": {
"url": {
"raw": "http://localhost:8081/users?per_page=5&page=2",
"protocol": "http",
"host": [
"localhost"
],
"port": "8081",
"path": [
"users"
],
"query": [
{
"key": "per_page",
"value": "5",
"equals": true,
"description": ""
},
{
"key": "page",
"value": "2",
"equals": true,
"description": ""
}
],
"variable": []
},
和
"request": {
"url": "http://localhost:8081/users/2",
注意:只有子集,整个 JSON 会太长。
【问题讨论】:
-
显示 JSON 示例。
-
“重复”处理更简单的情况,其中有不同的对象类型或整数/字符串等。但不是大型嵌套结构中的字符串/对象。
-
@Cerise Limón 我添加了 JSON 示例
-
@Phillipp @JimB 链接的问题中的一些答案应该适合您。具体来说,在这种情况下,具有
UnmarshalJSON函数的结构应该可以正常工作。