如何在struct中封送变量JSON响应
我使用的API在发生验证错误时的响应略有不同 成功回应:如何在struct中封送变量JSON响应,json,go,marshalling,Json,Go,Marshalling,我使用的API在发生验证错误时的响应略有不同 成功回应: { "_status":"success", "_data":{ "id":3901, "name":"Customer", "age":"30" } } { "_status":"error", "_message":"Validation error", "_data":[ { "_field":"name",
{
"_status":"success",
"_data":{
"id":3901,
"name":"Customer",
"age":"30"
}
}
{
"_status":"error",
"_message":"Validation error",
"_data":[
{
"_field":"name",
"_error":"You must inform a name"
},
{
"_field":"age",
"_error":"Age must be over 50"
}
]
}
错误响应:
{
"_status":"success",
"_data":{
"id":3901,
"name":"Customer",
"age":"30"
}
}
{
"_status":"error",
"_message":"Validation error",
"_data":[
{
"_field":"name",
"_error":"You must inform a name"
},
{
"_field":"age",
"_error":"Age must be over 50"
}
]
}
我已经在下面的结构中映射了错误响应,它在错误响应上运行良好,但在成功响应上失败
type Response struct {
Status string `json:"_status"`
Message *string `json:"_message"`
Data []map[string]interface{} `json:"_data"`
}
有没有一种方法可以使结构即使在成功响应的情况下也能工作?
数据接口{}
也可以。问题在于您的成功响应,\u data
是一个JSON数组,而不是JSON对象,并且只有JSON对象才能解组到映射中,然后,在状态根据其值解组后,为数据分配正确的结构,并将原始消息解组到其中。@mkopriva您能给我一些关于这种分配的示例吗?当然,也有一些变化,你不必这样做,什么对你最合适。我想补充一点:通常,当你收到错误响应时,你应该附上相应的状态代码。因此,当您的状态代码为200时,您可以简单地解组到一个结构,而到400+Data interface{}
上的另一个结构就可以了。问题在于您的成功响应,\u data
是一个JSON数组,而不是JSON对象,并且只有JSON对象才能解组到映射中,然后,在状态根据其值解组后,为数据分配正确的结构,并将原始消息解组到其中。@mkopriva您能给我一些关于这种分配的示例吗?当然,也有一些变化,你不必这样做,什么对你最合适。我想补充一点:通常,当你收到错误响应时,你应该附上相应的状态代码。因此,当您的状态代码为200时,您只需解组到一个结构,然后在400时解组到另一个结构+