Elm Json Decode-不执行任何操作,取回原始字符串

问题描述 投票:2回答:1

我正在使用-sett / elm-aws-core从AWS API获取信息,不幸的是,这非常不一致。大多数端点都返回JSON,并且可以与该lib一起正常工作,该lib需要使用JSON解码器发出请求,但是EC2端点返回XML(因为为什么不这样做)。

据我所知,lib没有任何选项不对JSON进行解码,这根本不起作用:

let ec2 region = Service.defineRegional "ec2" "2016-11-15" Service.QUERY Service.SignV4 (Service.setXmlNamespace "https://ec2.amazonaws.com/doc/2016-11-15/") region in
let params = [("Action", "DescribeImages"), ("Version", "2016-11-15"), ("Owner.1", "self")] in
Http.request "DescribeImages" GET "/" Http.emptyBody JSONDECODERHERE |> Http.addQuery params |> Http.send (ec2 region) creds |> Task.attempt msg
Failed : Problem with the given value:

"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<DescribeImagesResponse .......

您可以在其中看到,您需要将JSON解码器传递给Http.request,但是,当接收XML时,这当然会失败。有没有一种方法可以构建一个“伪” JSON解码器,该解码器实际上什么也不做,只传递原始字符串?我尝试使用解码。字符串,但实际上仍在解码它,但失败了。如果可以的话,我可以在更新功能中手动对其运行XML解码器,这很好。

谢谢

json amazon-web-services amazon-ec2 elm
1个回答
1
投票

不可能制作出能够满足您需求的“伪”解码器,因为问题不在于解码。问题在于解析,解析是在解码之前完成的。解析是将字符串转换为通常称为抽象语法树(AST)的数据结构的过程,但是由于Elm可以编译为JavaScript,而JSON也是JavaScript的子集,因此解析结果实际上只是一个JavaScript对象。解码是将未类型化的数据结构转换为正确类型化的数据结构的过程。

因此,无法使用此API完成所需的操作。您很可能需要自己构建http请求并直接使用elm/http

© www.soinside.com 2019 - 2024. All rights reserved.