【发布时间】:2019-02-17 11:11:30
【问题描述】:
我有一个由于各种原因无法替换的软件,并且有一个看起来像 RESTFul 的 API。
所有端点都可以响应一个或多个(数组)对象,即使 RESTFul 架构说它必须响应一个对象数组,如果它只找到一个对象,它会返回对象而不被包装在数组中.
GET /customers?country_id=10000
{
"count": 5,
"customers": [
{ "id": 10000, "name": "Customer 10000", "vatnum": "123456789P", "country_id": 10000 },
{ "id": 10001, "name": "Customer 10001", "vatnum": "234567891P", "country_id": 10000 },
{ "id": 10002, "name": "Customer 10002", "vatnum": "345678912P", "country_id": 10000 },
{ "id": 10003, "name": "Customer 10003", "vatnum": "456789123P", "country_id": 10000 },
{ "id": 10004, "name": "Customer 10004", "vatnum": "567891234P", "country_id": 10000 }
]
}
GET /customers?vatnum=123456789P
{
"count": 1,
"customers": {
"id": 10000,
"name": "Customer 10000",
"vatnum": "123456789P",
"country_id": 10000
}
}
我的问题是我正在制作这个 API 的客户端,我不知道在映射/解析 Golang 结构中的服务器响应方面解决这个问题的最佳策略。
【问题讨论】:
-
您在
struct{Couint int; Customers json.RawMessage}中解析响应,并根据 Count 将客户解组为结构或结构切片。 -
现在我知道
json.RawMessage,它非常强大。 THX