thom_stackoverflow
thom_stackoverflow

Reputation: 193

json_encode, associative array needed in [ brackets ]

I'm using PHP, and in order to feed some data to an API using Curl, I need to format some strings and have been using json_encode. It works just fine for simpler bits, but this I can't figure out:

The API expects this:

{
  "id": "string",
  "startTime": "2017-04-18T08:04:23.167Z",
  "endTime": "2017-04-18T08:04:23.167Z",
  "contacts": [
    {
      "id": "string",
      "displayName": "string"
    }

My code so far:

$data_set_pre = array(
    "id" => "",
    "startTime" => "2017-04-14T07:47:59.028Z",
    "endTime" => "2017-04-15T07:47:59.028Z",
    "contacts" => array("id" => "ahashofsomenumbersandletters", "displayName" =>  "John Doe"),
  );
$data_set = json_encode($data_set_pre);

Unfortunately, this produces:

{"id":"","startTime":"2017-04-14T07:47:59.028Z","endTime":"2017-04-15T07:47:59.028Z","contacts":{"id":"ahashofsomenumbersandletters","displayName":"John Doe"}}

I've been researching, and I'm getting the impression that json_encode will encode everything BUT an unbroken sequential array starting from 0 as an object, and I don't now how to work around this. (No, I can't change what the API requires, it's provided by a 3rd-party).

Upvotes: 2

Views: 1094

Answers (2)

Mohammed Bakr Sikal
Mohammed Bakr Sikal

Reputation: 357

<?php
$data_set_pre = array(
    "id" => "12",
    "startTime" => "2017-04-14T07:47:59.028Z",
    "endTime" => "2017-04-15T07:47:59.028Z",
    "contacts" => array(
                    array(
                        "id" => "ahashofsomenumbersandletters", "displayName" =>  "John Doe"
                        )
                )
    );
$data_set = json_encode($data_set_pre);

Upvotes: 4

Mayank Pandeyz
Mayank Pandeyz

Reputation: 26258

Change the following line:

"contacts" => array("id" => "ahashofsomenumbersandletters", "displayName" =>  "John Doe"),

to

"contacts" => array(array("id" => "ahashofsomenumbersandletters", "displayName" =>  "John Doe")),

It will give:

{"id":"","startTime":"2017-04-14T07:47:59.028Z","endTime":"2017-04-15T07:47:59.028Z","contacts":[{"id":"ahashofsomenumbersandletters","displayName":"John Doe"}]}

here [{"id":"ahashofsomenumbersandletters","displayName":"John Doe"}] is a multi-dimension array

Upvotes: 2

Related Questions