can';在RestAPI中,无法将主体部分的HTML cURL转换为JavaScript json

can';在RestAPI中,无法将主体部分的HTML cURL转换为JavaScript json,javascript,rest,api,http,curl,Javascript,Rest,Api,Http,Curl,我正在尝试使用moneybird api()使用XHR过账方法将收据上载到我的帐户。 我的连接工作得很好,但我似乎不知道(在大量搜索和查看实际示例之后)如何将文章中的cURL数据部分解析为与JavaScript兼容的部分(如果我正确的话是json?) 这是moneybird在其文档中给出的示例: curl-s-H“内容类型:应用程序/json”-H“授权:承载84ec207ad0154a508f798e615a998ac1fd752926d00f955fb1df3e144cba44ab”\ -快

我正在尝试使用moneybird api()使用XHR过账方法将收据上载到我的帐户。 我的连接工作得很好,但我似乎不知道(在大量搜索和查看实际示例之后)如何将文章中的cURL数据部分解析为与JavaScript兼容的部分(如果我正确的话是json?)

这是moneybird在其文档中给出的示例:

curl-s-H“内容类型:应用程序/json”-H“授权:承载84ec207ad0154a508f798e615a998ac1fd752926d00f955fb1df3e144cba44ab”\
-快报\
-d'{“收据”:{“详细信息”属性:{“0”:{“id”:226902553790514831,“说明”:“更新说明”,“价格”:20}}\
https://moneybird.com/api/v2/123/documents/receipts/226902553785271950.json

我需要以某种方式解析/转换的就是这一部分:
'{“收据”:{“详细信息”属性:{“0”:{“id”:226902553790514831,“描述”:“更新的描述”,“价格”:20}}}}\

要适应我的JavaScript代码,请执行以下操作:

var XMLHttpRequest = require('xhr2');
var request = new XMLHttpRequest();

request.open('POST', 'https://moneybird.com/api/v2/myId/documents/receipts');

request.setRequestHeader('Authorization', 'Bearer myApiKey');
request.setRequestHeader('Content-Type', 'application/json');
request.setRequestHeader('Accept', 'application/json');

request.onreadystatechange = function () {
    if (this.readyState === 4) {
        console.log('Status:', this.status);
        console.log('Headers:', this.getAllResponseHeaders());
        console.log('Body:', this.responseText);
    }
};

var body = "cURL/converted json has to be in this place"


request.send(body); 
如果它对您有帮助的话,文档中也有一个ruby示例,但是由于我不熟悉这种语言,它对我帮助不大


虽然这是在一个网站上运行的,但我更喜欢JavaScript,但如果您有其他/更好的解决方案,我很乐意尝试。

您在示例中提供的cURL数据结构在格式化为JSON时如下所示:

{  
   "receipt":{  
      "details_attributes":{  
         "0":{  
            "id":226902553790514831,
            "description":"updated description",
            "price":20
         }
      }
   }
}
我想你需要用你想要发布的正确值填充id、描述和价格。如果您需要发布多个行项目,您可以在“details\u attributes”对象中添加其他条目。如下图所示:

{  
   "receipt":{  
      "details_attributes":{  
         "0":{  
            "id":226902553790514831,
            "description":"updated description",
            "price":20
         },
         "1":{  
            "id": "Another ID",
            "description":"Another Description",
            "price": "Another Price"
         }
      }
   }
}
在body变量中定义有效负载后,需要将其转换为JSON字符串,并使用XHR.send()发布,如下所示:

request.send(JSON.stringify(body));
我还建议研究类似于“”或“”的内容,以简化请求过程

最后,快速阅读文档,您还需要将moneybird的API端点更改为包含“.json”

var myId = 123; 
request.open('POST', `https://moneybird.com/api/v2/${myId}/documents/receipts.json`);

var body=JSON.stringify(一些对象)其中
某个对象
是您的收据对象。只是好奇,您是否需要出于任何特殊原因使用xhr2?使用像axios这样的东西可以更清晰地处理您的请求,怎么样?我想说的是使用
fetch
request
@CharlieSchliesser推荐的
axios
也很棒。看到这一点很痛苦:)另外,您需要处理的响应数据需要在
请求中处理。onreadystatechange
因为请求是异步的。@MaxBaldwin这是在函数中完成的,还是我错了?@tjallo不,看起来您很好。我只是想提一下。使用这个我得到了以下错误:正文:{“错误”:“令牌无效”,“符号”:{“请求”:“无效”{u grant}}我已经自己解决了上面的问题。很抱歉给您带来不便。如果我能够将@tjallo凝胶,您是否能够使我的答案正确。