0

I'm having some issues with inserting some data in JSON object the right way. I want the JSON object to NOT have any keys on top of the object. Illustrating like this is my JSON now:

JSON NOW:

{
    "Account2": [{
        "accountId": "",
        "containerId": "",
        "tag": 1,
        "trigger": 1,
        "variable": 4,
        "account_name": "Account2"
    }, {
        "accountId": "",
        "containerId": "",
        "missing_live": true
    }],
    "Account 1": [{
        "accountId": "",
        "containerId": "",
        "tag": 2,
        "trigger": 1,
        "variable": 1,
        "account_name": "Account 1"
    }],
    "GTMdocx": [{
        "accountId": "",
        "containerId": "",
        "tag": 0,
        "trigger": 0,
        "variable": 1,
        "account_name": "GTMdocx"
    }]
}

As you can see "Account2", "Account 1", "GTMdocx", etc.. they are like account_name inside the json object. I would want to remove the "top"-key and keep the "account_name" instead. but when i remove the line in the code i only get one response(one JSON object) not all 3.

PHP code:

       try { // Some containers might not have live-version
            $container_version = self::listAccountsContainersVersion($account_container['path']);
            $account_container->tag = count($container_version['tag']);
            $account_container->trigger = count($container_version['trigger']);
            $account_container->variable = count($container_version['variable']);
            $account_container->account_name = $account['name'];

            // Add the whole account to the main container
            $containers[$account['name']][] = $account_container;

        } catch (\Exception $e) {
            $account_container->missing_live = true;
            $containers[$account['name']][] = $account_container;

            //$containers[$account['name']]['missing_live_version'] = $account_container; //Container not published
        }

ive commented // Add the whole account to the main container... here is the line where all get wrong. Ive tried to change it to:

$containers[$account] = $account_container;

So I will get all the $account JSON object included in $account_container but if I don't have $account['name'] the response show only one object when its 3. (this is inside a foreach loop).

So what i would want one JSON object to look like is this:

{
    "1": {
        "accountId": "",
        "containerId": "",
        "tag": 1,
        "trigger": 1,
        "variable": 4,
        "account_name": "Account2"
    },
    "2": {
        "accountId": "",
        "containerId": "",
        "missing_live": true,
        "account_name": "Account2"
    },
    "3": {
        "accountId": "",
        "containerId": "",
        "tag": 2,
        "trigger": 1,
        "variable": 1,
        "account_name": "Account 1"
    },
    "4": {
        "accountId": "",
        "containerId": "",
        "tag": 0,
        "trigger": 0,
        "variable": 1,
        "account_name": "GTMdocx"
    },
    "5": {
        "accountId": "",
        "containerId": "",
        "tag": 0,
        "trigger": 0,
        "variable": 0,
        "account_name": "Account3"
    }
}

You can see I removed the "Account2" on top.

1
  • Illegal offset type in (...) Commented Dec 22, 2017 at 11:04

1 Answer 1

1

So to get your required JSON string you need to have a single dimensions array

so save your account_container like this

$containers[] = $account_container;
Sign up to request clarification or add additional context in comments.

1 Comment

Beautiful. Thank you!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.