Конвертация массива в JSON

193
28 октября 2018, 12:20

Всем доброго дня. Пытаюсь сделать клавиатуру с помощью API VK, по их методчике, но что-то не получается. Пробую перевести массив в JSON, но не выходит, выдает ошибку "Function name must be a string", хотя вроде все делаю верно.

Код на PHP:

$array_keyboard_data = array(
"one_time"=>"false",
"buttons"=>array(
   array(
      array(
         "action"=>array(
            "type"=>"text",
            "payload"=>"{\"button\":\"1"}",
            "label"=>"Red"),
         "color"=>"negative"),
      array(
         "action"=>array(
            "type"=>"text",
            "payload"=>"{\"button\":\"2\"}",
            "label"=>"Green"),
         "color"=> "positive")),
   array(
      array(
         "action"=>array(
            "type"=>"text",
            "payload"=>"{\"button\":\"3\"}",
            "label"=>"White"),
         "color"=>"default"),
     array(
         "action"=>array(
            "type"=>"text",
            "payload"=>"{\"button\":\"4\"}",
            "label"=>"Blue"),
          "color"=>"primary")
       )
    ));
$jsoncode = $json_encode($array_keyboard_data);
echo $jsoncode;

Ожидаемый результат:

{
"one_time": false,
"buttons": [
  [{
    "action": {
      "type": "text",
      "payload": "{\"button\": \"1\"}",
      "label": "Red"
    },
    "color": "negative"
  },
 {
    "action": {
      "type": "text",
      "payload": "{\"button\": \"2\"}",
      "label": "Green"
    },
    "color": "positive"
  }],
  [{
    "action": {
      "type": "text",
      "payload": "{\"button\": \"3\"}",
      "label": "White"
    },
    "color": "default"
  },
 {
    "action": {
      "type": "text",
      "payload": "{\"button\": \"4\"}",
      "label": "Blue"
    },
    "color": "primary"
  }]
]
} 

Плюс хотелось бы узнать, верно ли я составил массив для конвертации, может это можно как-то сократить для удобства?

Answer 1

Пробую перевести массив в JSON, но не выходит, выдает ошибку "Function name must be a string", хотя вроде все делаю верно.

Забыли \ в одной из строк:

<?php
    $array_keyboard_data = array(
"one_time"=>"false",
"buttons"=>array(
   array(
      array(
         "action"=>array(
            "type"=>"text",
            "payload"=>"{\"button\":\"1\"}", // \ <---
            "label"=>"Red"),
         "color"=>"negative"),
      array(
         "action"=>array(
            "type"=>"text",
            "payload"=>"{\"button\":\"2\"}",
            "label"=>"Green"),
         "color"=> "positive")),
   array(
      array(
         "action"=>array(
            "type"=>"text",
            "payload"=>"{\"button\":\"3\"}",
            "label"=>"White"),
         "color"=>"default"),
     array(
         "action"=>array(
            "type"=>"text",
            "payload"=>"{\"button\":\"4\"}",
            "label"=>"Blue"),
          "color"=>"primary")
       )
    ));
    echo json_encode($array_keyboard_data);
?>

Результат:

{
  "one_time": "false",
  "buttons": [
    [{
      "action": {
        "type": "text",
        "payload": "{\"button\":\"1\"}",
        "label": "Red"
      },
      "color": "negative"
    }, {
      "action": {
        "type": "text",
        "payload": "{\"button\":\"2\"}",
        "label": "Green"
      },
      "color": "positive"
    }],
    [{
      "action": {
        "type": "text",
        "payload": "{\"button\":\"3\"}",
        "label": "White"
      },
      "color": "default"
    }, {
      "action": {
        "type": "text",
        "payload": "{\"button\":\"4\"}",
        "label": "Blue"
      },
      "color": "primary"
    }]
  ]
}
  • json_encode — Возвращает JSON-представление данных
READ ALSO
Организация проекта в Laravel

Организация проекта в Laravel

Есть проект сервиса, он на стадии постановки тзНужно реализовать несколько интерфейсов:

138
Yii2. Создание миграций

Yii2. Создание миграций

Друзья, столкнулся с некоторой проблемойНеобходимо создать 3 таблицы в БД (brand,model,equipment) с применением связей через инструмент миграций Yii2

181
Как в Laravel возвратить view из функции?

Как в Laravel возвратить view из функции?

Есть большой код в моем HomeController-е после рефакторинга , изменил метод index теперь view должен возвратится так

166
Google Maps API - Place Autocomplete только для 2 полей формы

Google Maps API - Place Autocomplete только для 2 полей формы

В оффдокументации по Place Autocomplete API все отлично описано, но

179