Autor Zpráva
xlifer
Profil
$data = array
(
  "data" => array
  (
    "emailaddress" => "xxx@yyy.cz",
    "name" => "Jmeno",
  )
);

Výsledek pomocí funkce json_encode($data):

{
    "data": {
        "emailaddress": "xxx@yyy.cz",
        "name": "Jmeno"
    }
}

Potřebuji docílít formátu, kde jsou hranaté závorky:

{
    "data": [
        {
            "emailaddress": "xxx@yyy.cz",
            "name": "Jmeno"
        }
    ]
}

Jde toho nějak docílit? API, které zkouším rozchodit bere pouze formát JSONu, kde jsou hranaté závorky.

Nebo to musím řešit v tomto případě, pouze přímo takto:

$data = '
{
    "data": [
        {
            "emailaddress": "xxx@yyy.cz",
            "name": "Jmeno"
        }
    ]
}';
Lamicz
Profil
echo json_encode(['data' => [['emailaddress' => 'xxx@yyy.cz', 'name' => 'Jmeno']]]);
xlifer
Profil
Lamicz:
Zkouším, ale hlásí to chybu:
Parse error: syntax error, unexpected '[', expecting ')'
Kcko
Profil
xlifer:
Máš starou verzi PHP, přepiš si to na array();
Keeehi
Profil
xlifer:
Lepší by bylo updatovat PHP. První PHP které zná krátkou vezi zápisu polí je PHP 5.4. To znamená, že máš PHP 5.3 nebo starší a to v důsledku znamená že provozuješ verzi která nedostává už ani bezpečnostní záplaty minimálně už téměř čtyři roky. Koncem roku skončí podpora pro 5.6 a 7.0 takže doporučoval bych 7.1 které aktivní vývoj končí letos ale pak ještě rok bude dostávat bezpečnostní aktualizace nebo rovnou 7.2 která má aktivní podporu až do konce 2019 a pak ještě rok bezpečnostní aktualizace.
xlifer
Profil
Kcko:
Nevím jak to myslíš? Array řeším hned na začátku příspěvku, to s toho dostanu stejný výsledek, nebo ne?


Keeehi:
Rozumím, díky za info.
Keeehi
Profil
xlifer:
Nevím jak to myslíš? Array řeším hned na začátku příspěvku, to s toho dostanu stejný výsledek, nebo ne?
[] je úplně to samé jako array(). Je to jen kratší zápis toho samého protože kdo by se s tím chtěl stále vypisovat, že? Takže každé [ nahraď array( a každé ] nahraď ) a bude ti to fungovat. Nebo pokud upgraduješ, tak ti to bude fungovat i v té zkrácené formě.

Jinak objekt, nebo asociativní pole json_encode překládá těmi chlupatými závorkami, "normální" pole překládá hranatými.
json_encode(array(1, 2, 3)); // [1,2,3]
json_encode(array('a' => 1, 'b' => 2, 'c' => 3)); //{"a":1,"b":2,"c":3}

Jinak to co po tobě to API ze sémantického hlediska vyžaduje je pole objektů. Což bude zřejmě z důvodu, že jako data budeš moci poslat údaje o více lidech.
{
    "data": [
        {
            "emailaddress": "xxx@yyy.cz",
            "name": "Pavel"
        },
        {
            "emailaddress": "aaa@bbb.cz",
            "name": "Lukáš"
        }
    ]
}
xlifer
Profil
Keeehi:
Super, moc díky za vysvětlení. Teď jsem zase o něco moudřejší.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: