2017-02-13 2 views
0

Я получаю выход JSON ниже:преобразование массива в объект JSON внутри другого объекта JSON с помощью PHP

{ 
"clientCorrelator": "58a1acaf3ebf0", 
"referenceCode": "REF-12345", 
"endUserId": "263774705932", 
"transactionOperationStatus": "Charged", 
"paymentAmount": { 
    "0": { 
     "amount": 34, 
     "currency": "USD", 
     "description": "Ecofarmer Bulk Sms Online payment" 
    } 
}, 
"chargeMetaData": { 
    "channel": "WEB", 
    "purchaseCategoryCode": "Online Payment", 
    "onBeHalfOf": "Paynow Topup" 
}, 
"merchantCode": "42467", 
"merchantPin": "1357", 
"merchantNumber": "771999313" 

}

Я хочу, чтобы получить выход ниже, но как-то мой РНР объекта JSON преобразование превращает ключ «chargeinformation» в «0».

$payment_amount = array(
$charginginformation = array(
    'amount' => 34, 
    'currency' => 'USD', 
    'description' => 'Ecofarmer Bulk Sms Online payment' 
) 

); 

$charge_data = array(
    'channel' => 'WEB', 
    'purchaseCategoryCode' => 'Online Payment', 
    'onBeHalfOf' => 'Paynow Topup' 
); 


//API Url 
$url = ''; 

//Initiate cURL. 
$ch = curl_init($url); 

//The JSON data. 
$jsonData = array(
    'clientCorrelator' => $u_id, 
    'referenceCode' => 'REF-12345', 
    'endUserId' => '263774705932', 
    'transactionOperationStatus' => 'Charged', 
    'paymentAmount' => $payment_amount, 
    'chargeMetaData' => $charge_data, 
    'merchantCode' => '42467', 
    'merchantPin' => '1357', 
    'merchantNumber' => '771999313' 
); 

//Encode the array into JSON. 
$jsonDataEncoded = json_encode($jsonData, JSON_FORCE_OBJECT); 

Как я могу остановить изменение json_encode?

+0

Тег 'api' говорит «НЕ ИСПОЛЬЗУЙТЕ: Тег с библиотекой, которую вы имеете в виду, [api-design] или что-то еще подходящее вместо этого». Вероятно, 'php json' было бы намного более уместным. –

+0

спасибо. отметил – tendaitakas

ответ

1

Ваш вопрос здесь:

$payment_amount = array(
    //this is essentially array("cat", "dog", "etc"); 
    $charginginformation = array(
     'amount' => 34, 
     'currency' => 'USD', 
     'description' => 'Ecofarmer Bulk Sms Online payment' 
    ) 
); 

Вы добавляете элемент в массив с числовым индексом

Чтобы получить эту работу сделать

$payment_amount = array(
    "charginginformation" => array(
     //array data 
    ) 
); 
Смежные вопросы