我正在Go中构建一个JSON API,我想将错误响应作为json返回。
响应示例:
{
"error": "Invalid request syntax"
}
我以为我可以创建一个实现错误接口的包装器结构,然后使用Go的json封送处理程序作为获取错误的json表示形式的一种干净方法:
type JsonErr struct {
Err error `json:"error"`
}
func (t JsonErr) Error() string {
return t.Err.Error()
}
这只会将JsonErr {"error":{}}
封送为,是否可以使用默认的Go
json封送处理程序对该结构进行编码,还是需要为JsonErr结构编写快速的自定义MarshalJson?
只需实现json.Marshaler
接口:
func main() {
var err error = JsonErr{errors.New("expected")}
json.NewEncoder(os.Stdout).Encode(err)
}
type JsonErr struct {
error
}
func (t JsonErr) MarshalJSON() ([]byte, error) {
return []byte(`{"error": "` + t.Error() + `"}`), nil
}
它不起作用的原因是因为json.Marshal
没有检测到错误接口,并且大多数错误类型都没有导出的字段,因此反射无法显示这些字段。
我可以找到许多例子,说明如何让akka-http服务器轻松封送由case类表示的响应实体,只需混合使用SprayJSONSupport/DefaultJSONProtocol,在隐式作用域中提供jsonFormat并在路由DSL中使用complete指令。整齐!
null 杰克逊在默认情况下有能力做到这一点。
我从遵循以下模式的 API 接收动态 JSON: 例如,原始数据将是: 考虑到我们想避免解组到这样的结构: 我们将不得不像这样将数据投回: 解组的更好方法是什么?
问题内容: 我正在尝试找到一种方法来以最少的工作量完成xsd模式到数据存储往返。 我使用jaxb从架构中构建对象模型,现在我想基于JPA(或JDO或其他东西?)存储这些对象。是否有可能基于JAXB注释自动增强缺少注释的对象?是可取的吗? 谢谢 问题答案: 对于此用例,您有几种选择。 选项#1-Hyperjaxb3 我自己没有使用过,但是Hyperjaxb3应该在模型上生成JAXB和JPA批注: h
我正在开发一个客户端来使用 Web 服务,但由于某种原因,除非所有命名空间都正确且没有任何前缀,否则我的请求没有得到正确处理。 我所有的类都是由服务提供商使用提供的XSD和WSDL创建的。 NfeDadosMsg.class 包装信息.java TConsStatServ.class package br.inf.portalfiscal.nfe; 包装信息.java 输出xml: 由于某种原因,
我正在尝试使用JAXB进行封送处理。 我的输出是这样的: ...但我需要这样的输出: 如果取消对代码的注释,则会得到。没有它,我可以编译,但我不能得到所需的精确输出。 我的豆子长这样: 适配器类