2016-05-02 8 views
-1

eine der API Rückkehr Antwort als Objektarray zu analysieren, JSon I wie untenphp Antworttext als Objektarray, wie der Inhalt

{"errors":[{"category":"INVALID_REQUEST_ERROR","code":"MISSING_REQUIRED_PARAMETER","detail":"Missing required parameter.","field":"amount_money.amount"}]} 

das Objekt Array kodieren ich den Detail Feldwert erhalten möchte , wie man es bekommt.

+4

Warum codieren Sie eine Antwort auf JSON? – Daan

+0

@Daan, um den Inhalt zu lesen, ansonsten sieht es wie Array aus ([Fehler] => Array ([0] => stdClass Objekt ([Kategorie] => INVALID_REQUEST_ERROR [code] => MISSING_REQUIRED_PARAMETER [detail] => Fehlender erforderlicher Parameter. [field] => amount_money.amount))) –

+0

Wenn die API ein Objekt-Array zurückgibt, warum nicht einfach das 'detail'-Feld von diesem Objekt-Array bekommen? – Amous

Antwort

1

Sie können detail Feld direkt von Antwortfeld gelesen.

<?php 
$json = '{"errors":[{"category":"INVALID_REQUEST_ERROR","code":"MISSING_REQUIRED_PARAMETER","detail":"Missing required parameter.","field":"amount_money.amount"}]}'; 

ich das Umwandeln Ihrer JSON-Array nur zum Beispiel.

//Actual Array Response 
$a = json_decode($json, true); 

echo "<pre>"; 
print_r($a); 
echo "</pre>"; 

//Save detail to Variable 
$detail = $a['errors'][0]['detail']; 
echo $detail; 
?> 
+0

Ich glaube nicht, die Antwort ist in PHP. – Daan

+2

Er hat die Frage sowohl als PHP als auch im Seitentitel getaggt. – Marcus

+0

@Daan OP erwähnt nur 'php',' arrays' in Tags –

2

Verwenden Punktnotation Objektelemente zuzugreifen:

 // if that response is as string JSON 
 
    var obj = JSON.parse('{"errors":[{"category":"INVALID_REQUEST_ERROR","code":"MISSING_REQUIRED_PARAMETER","detail":"Missing required parameter.","field":"amount_money.amount"}]}'); 
 

 
    alert("Details is: "+obj.errors[0].detail);

0

Ihre Array-Struktur ist:

array (size=1) 
    'errors' => 
    array (size=1) 
     0 => 
     array (size=4) 
      'category' => string 'INVALID_REQUEST_ERROR' (length=21) 
      'code' => string 'MISSING_REQUIRED_PARAMETER' (length=26) 
      'detail' => string 'Missing required parameter.' (length=27) 
      'field' => string 'amount_money.amount' (length=19) 

So nach unten bekommen Sie es wie folgt zu erreichen:

$array = json_decode('{"errors":[{"category":"INVALID_REQUEST_ERROR","code":"MISSING_REQUIRED_PARAMETER","detail":"Missing required parameter.","field":"amount_money.amount"}]}',true);  
echo $array['errors'][0]['detail']; 
0

(pseudo) Um

$response = Array (
    [errors] => Array (
     [0] => stdClass Object (
      [category] => INVALID_REQUEST_ERROR 
      [code] => MISSING_REQUIRED_PARAMETER 
      [detail] => Missing required parameter. 
      [field] => amount_money.amount 
     ) 
    ) 
) 

direkten Zugriff (und nicht kodieren zu JSON) Detail Sie einfach (so etwas wie) die folgende verwenden würde:

$response['errors'][0]->detail 

Offensichtlich wo $response wird das Array in Frage zu halten. Könnte sich in deinem Skript unterscheiden. Geben Sie diesen Wert einer Variablen $detail = $response['errors'][0]->detail; zu, oder geben Sie ihn einfach echo $response['errors'][0]->detail; aus.

+0

Ich habe das versucht, aber das funktioniert nicht, aber das funktioniert $ a ['errors'] [0] ['detail'] –

+0

Dieser Code funktioniert, wenn Sie die Antwort direkt von der API zugreifen. Es besteht keine Notwendigkeit, die Antwort auf JSON zu codieren, nur um sie sofort wie andere Antworten zu dekodieren. Wenn die Antwort als ein Array/Objekt kommt, behandeln Sie es einfach auf diese Weise. – Marcus