“集合的有效数组格式”是什么意思?

时间:2015-12-03 15:53:12

标签: php api exact-online

调用REST API方法时,我会收到错误

  

处理请求流时出错。有效负载必须代表集合的有效数组格式。

但是在搜索时:

  

集合的有效数组格式

我回来了很多,但没有说明这是什么意思。我猜我发送的数据无效(目前我正在发送array('foo' => 'Bar')),但这可能不正确。

有没有人指出这里发生的事情?或者我能检查什么?

ExactOnline的文档(我发布的文件)是不够的。它只说明了它们有哪些字段,但没有说明这些错误消息。

==========================

好的,这需要一些澄清,我的不好!

如上所述,我通过他们的API与ExactOnline进行沟通。

我正在调用发布销售订单的方法。有了它,我正在使用Exact在其网站上提供的一组脚本(供开发人员使用)。

页面上的

https://start.exactonline.nl/docs/HlpRestAPIResourcesDetails.aspx?name=SalesOrderSalesOrders

在“POST”下,您可以阅读必填字段,其中“SalesOrderLines”就是其中之一。它没有告诉我它的期望或格式。

我将我的数组包装在json_encode中并再次尝试,但没有运气。它仍然告诉我同样的错误。

2 个答案:

答案 0 :(得分:3)

我目前正在使用相同的ExactOnline API。不得不说文档确实缺乏关于这个主题的信息!

要为集合创建有效数组,必须使用以下基数:

$array = array(
   'InvoiceTo' => 'bc960e43-be9d-409c-9cfe-31ce56cc3238',
       'SubscriptionLines' => array(
           array('Item' => '7e50702b-5bbf-4b77-ab73-5dad50016e82')
       )
)

此列表中的json_encode($ array)将是:

{
"InvoiceTo":"bc960e43-be9d-409c-9cfe-31ce56cc3238",
    "SubscriptionLines":[
        {"Item":"7e50702b-5bbf-4b77-ab73-5dad50016e82"}
    ]
}

所以这里重要的部分是在SubScriptionLines中做数组(array())。这告诉JSON您要使用JSON数组而不是JSON对象表示法。

对于您的特定问题,您需要将密钥更改为SalesOrder文档中给出的密钥。并非所有api的manditory字段都包含在此处,因为此解决方案适用于Subscriptions。但是,原则是一样的。

希望这可以帮助您和其他人完全实现完整的API:)

答案 1 :(得分:1)

您如何序列化有效负载?如果它是JSON格式,集合将如下所示:

[
    {
        "foo": "bar"
    },
    {
        "foo": "baz"
    }
]