Json 未被解析 ConvertAPI

Json not being parsed ConvertAPI

提问人:Benzine 提问时间:6/25/2020 最后编辑:TomasBenzine 更新时间:11/17/2023 访问量:226

问:

我正在使用经典的asp和JSON将html转换为pdf。我使用以下方式发送请求:

        ''Convert output to pdf
        varURL = "https://" & varServerLive & "/import/" & fileName

        postURL = "https://v2.convertapi.com/convert/htm/to/pdf?Secret=SECRET_KET&File=" & varURL & "&StoreFile=true"
        parmToSend = "{""Parameters"":[{""Name"":""File"",""FileValue"":{""url"": """ & varURL & """}}," & _
            "{""Name"":""WebHook"",""Value"":""" & varURL & """}" & _
            "]}"

        Set ServerXmlHttp = Server.CreateObject("MSXML2.XMLHTTP.6.0")
        ServerXmlHttp.open "POST", postURL
        ServerXmlHttp.setRequestHeader "Accept", "application/json"
        ServerXmlHttp.setRequestHeader "Content-Type", "application/json"
        ServerXmlHttp.send parmToSend

        ''Get response
        responseText = ServerXmlHttp.responseText
        response.write(responseText)

        set myJson = JSON.parse(responseText)
        varFileUrl = myJson.Files.Url
        response.write(varFileUrl)

我得到以下回复:

responseText:

{"ConversionCost":2,"Files":[{"FileName":"54-25062020177.pdf","FileExt":"pdf","FileSize":48596,"FileId":"542c6f079fe5722bdbac2f73f84652d3","Url":"https://v2.convertapi.com/d/542c6f079fe5722bdbac2f73f84652d3/54-25062020177.pdf"}]}

这很好,但是当我尝试返回fileURL时,出现错误:

Microsoft VBScript 运行时错误“800a01b6”

对象不支持此属性或方法:“url”

/docs/members/cert.asp,第 122 行

您看到没有返回 url 的任何原因吗?我是否正确调用了 url(例如 myJson.Files.Url)?

任何帮助将不胜感激。

JSON 解析 ASP-Classic ConvertAPI

评论

1赞 user692942 6/25/2020
这是因为是一个数组,所以你需要指定数组中的哪个对象你正在获取其属性。您使用的是什么 JSON 解析器?FilesUrl
0赞 user692942 6/25/2020
有趣的是,您返回的响应数据似乎与上一个问题不同。就个人而言,更喜欢在响应中返回 Base64 数据的请求,因为此方法需要另一个 HTTP 调用才能从 Url 获取文件,这似乎是一个毫无意义的步骤。
0赞 Benzine 6/25/2020
是的,我已经更改了返回已创建pdf的url而不是fileData的请求。
0赞 Benzine 6/25/2020
我使用这个 json 文件作为包含,我在整个 asp 应用程序中使用这个文件没有问题。gbca.org.au/global/json2.min.asp
0赞 Benzine 6/25/2020
我正在使用 myJson.Files.Url 获取 url?这应该返回它,是吗?

答:

1赞 Benzine 6/25/2020 #1

排序。我需要指定数组中的位置,这很奇怪,因为我从来不需要在其他函数中这样做。

varFileUrl = myJson.Files。[0].网址

1赞 Tomas 6/25/2020 #2

我建议使用 和你会得到文件流而不是 JSON,之后你可以轻松地将该流转储到文件中。使用蒸汽响应的优点是:content-type:application/octet-stream

  • 响应大小将比 JSON 小约 30%,因为 JSON 文件 数据需要用 Base64 编码,

  • 您可以分块读取数据。

如果您仍然喜欢使用 JSON,请从请求中删除 StoreFile=true,您将获得文件数据而不是 URl,使用 base64 对其进行解码并写入文件。您将向服务器保存一个请求。

0赞 Ethelyn Matias 11/14/2023 #3

使用 json 的 ConvertApi 这是将 PNG 转换为 SVG 的最简单方法:

jQuery(document).ready(function() {
  $.ajax({
    dataType: "JSON",
    url: 'https://v2.convertapi.com/convert/png/to/svg?Secret=SECRET TOKEN HERE',
    type:"POST",
    data: {File:'IMAGE URL HERE',StoreFile:true},
    success: function(res){
      //console.log(res)
      console.log(res.Files[0].Url)
    }
  });
});