如何在struct中封送变量JSON响应

如何在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",

我使用的API在发生验证错误时的响应略有不同

成功回应:

{ 
   "_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时解组到另一个结构+