Как преобразовать данные JSON в указанный ниже формат - PullRequest
0 голосов
/ 10 мая 2018

Данные, приведенные ниже, являются josn, преобразованными из данных XML.

{"tldlist":{"tld":[{"tld":"co.uk"},{"tld":"eu"},{"tld":"live"},{"tld":{}}],"tldcount":"4"},"Command":"GETTLDLIST","APIType":"API","Language":"eng","ErrCount":"0","ResponseCount":"0","MinPeriod":{},"MaxPeriod":"10","Server":"SJL1VWRESELL_T","Site":"eNom","IsLockable":{},"IsRealTimeTLD":{},"TimeDifference":"+0.00","ExecTime":"0.000","Done":"true","TrackingKey":"b3c16684-c533-4947-b40a-19a5b4c08a31","RequestDateTime":"5\/10\/2018 12:54:28 AM","debug":{}}

Мне нужно преобразовать вышеуказанные данные в формат, указанный ниже:

  array (
 'tldlist' => 
array (
'tld' => 
array (
  0 => 
  array (
    'tld' => 'co.uk',
  ),
  1 => 
  array (
    'tld' => 'eu',
  ),
  2 => 
  array (
    'tld' => 'live',
  ),
  3 => 
  array (
    'tld' => 
    array (
    ),
  ),
),
'tldcount' => '4',
),
'Command' => 'GETTLDLIST',
'APIType' => 'API',
'Language' => 'eng',
'ErrCount' => '0',
'ResponseCount' => '0',
'MinPeriod' => 
 array (
),
 'MaxPeriod' => '10',
 'Server' => 'SJL1VWRESELL_T',
 'Site' => 'eNom',
 'IsLockable' => 
 array (
 ),
  'IsRealTimeTLD' => 
   array (
   ),
  'TimeDifference' => '+0.00',
  'ExecTime' => '0.000',
  'Done' => 'true',
  'TrackingKey' => 'b3c16684-c533-4947-b40a-19a5b4c08a31',
  'RequestDateTime' => '5/10/2018 12:54:28 AM',
  'debug' => 
   array (
   ),
 )

Найдите код моего контроллера:

  public function test(){

    $response = file_get_contents('https://resellertest.enom.com/interface.asp?command=gettldlist&uid=resellid&pw=resellpw&responsetype=xml');       

        $data = simplexml_load_string($response);
        $configdata   = json_encode($data);

        return view('clientlayout.main.test1', array('configdata' => 
       $configdata ));


      }

Предложите мне решение для получения данных в указанном формате. Мне нужны данные json в декодированном формате на мой взгляд. Когда я использую json_decode в контроллере, я получаю сообщение об ошибке, так как "htmlspecialchars () ожидает, что параметр 1 будет строка, заданный массив ".

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Это будет работать.

 $configdata   = collect(json_decode(json_encode($data)))
                    ->toArray();
0 голосов
/ 10 мая 2018

Я только что проверил код, и он работает

$response = file_get_contents('https://resellertest.enom.com/interface.asp?command=gettldlist&uid=resellid&pw=resellpw&responsetype=xml');       
$data = simplexml_load_string($response);
$configdata   = json_encode($data);
$final_data = json_decode($configdata,true);// Use true to get data in array rather than object
echo "<pre>";print_r($final_data);exit;

И ниже вывод, который я получил,

Array
(
    [tldlist] => Array
        (
            [tld] => Array
                (
                    [0] => Array
                        (
                            [tld] => co.uk
                        )

                    [1] => Array
                        (
                            [tld] => eu
                        )

                    [2] => Array
                        (
                            [tld] => live
                        )

                    [3] => Array
                        (
                            [tld] => Array
                                (
                                )

                        )

                )

            [tldcount] => 4
        )

    [Command] => GETTLDLIST
    [APIType] => API
    [Language] => eng
    [ErrCount] => 0
    [ResponseCount] => 0
    [MinPeriod] => Array
        (
        )

    [MaxPeriod] => 10
    [Server] => SJL1VWRESELL_T
    [Site] => eNom
    [IsLockable] => Array
        (
        )

    [IsRealTimeTLD] => Array
        (
        )

    [TimeDifference] => +0.00
    [ExecTime] => 0.000
    [Done] => true
    [TrackingKey] => 2b71ef9f-005e-4a33-a66f-3f1f69188f1f
    [RequestDateTime] => 5/10/2018 4:11:02 AM
    [debug] => Array
        (
        )

)

Я думаю, это то, что вы ищете

...