Я делаю вызовы Jira REST API и мне интересно, как я могу динамически добавлять более одного компонента в поле компонентов, используя REST API в PHP. У меня есть следующий код, работает, когда я устанавливаю его статическим, но не уверен, как это сделать динамически.
Пример набора статических компонентов:
$data = array(
'fields' => array(
'project' => array(
'key' => $rowAnswers["Key"]
),
'summary' => $rowAnswers["Summary"],
'description' => $rowAnswers["Description"],
'issuetype' => array(
'name' => $rowAnswers["IssueType"]
),
'components' => array(
array(
"name" => "component1"),
array(
"name" => "component2")
)
),
);
Мой массив, который я хочу заменить статическим контентом:
$components = explode(",", $rowAnswers["Components"]);
$arr = array();
foreach($components as $value){
$array = array("name"=>$value);
array_push($arr,$array);
}
Замена
'components' => array(
array(
"name" => "component1"),
array(
"name" => "component2")
)
с
'components' => [
$arr
]
не работает, я получаю:
"{"error":false,"error_msg":"","data":"{\"errorMessages\":[],\"errors\":{\"components\":\"expected Object\"}}"}"
Я вижу на вызов API, чтобы получить запрос, это выглядит так:
[components] => Array
(
[0] => stdClass Object
(
[name] => component1
)
[1] => stdClass Object
(
[name] => component2
)
)
Но я не уверен, как преобразовать массив в этот тип объекта или запроса в PHP. Вызов с помощью PHP-cURL и json_encoding отправляемых данных.
Заранее спасибо!
вам нужно декодировать ваш JSON как ассоциативный массив, установив для второго параметра значение true
проверить json_decode
ассоциативный
When TRUE, returned objects will be converted into associative arrays.
Чтобы это исправить, мне нужно было сделать следующее:
При создании массива из БД:
$components = explode(",", $rowAnswers["Components"]);
$arr = array();
foreach($components as $value){
$array = json_decode(json_encode(array("name"=>$value)), FALSE);
array_push($arr,$array);
}
Затем, чтобы установить компонент в запросе:
'components' => $arr
Спасибо