webentwicklung-frage-antwort-db.com.de

Wie konvertiert man eine JSON-Zeichenfolge in ein Array?

Was ich tun möchte, ist folgendes:

  1. jSON als Eingabe aus dem Textbereich in PHP verwenden 
  2. verwenden Sie diese Eingabe und konvertieren Sie sie in JSON, und übergeben Sie sie an PHP Curl, um die Anforderung zu senden.

dieses m bekommen bei PHP von get of api diese json-string, die ich an json übergeben möchte, aber es konvertiert nicht in array 

echo $str='{
        action : "create",
        record: {
            type: "n$product",
            fields: {
                n$name: "Bread",
                n$price: 2.11
            },
            namespaces: { "my.demo": "n" }
        }
    }';
    $json = json_decode($str, true);

der obige Code gibt kein Array zurück.

96
XMen

Wenn Sie die JSON in Ihrem Beitrag an json_decode übergeben, schlägt dies fehl. Gültige JSON-Zeichenfolgen haben Schlüssel in Anführungszeichen:

json_decode('{foo:"bar"}');         // this fails
json_decode('{"foo":"bar"}', true); // returns array("foo" => "bar")
json_decode('{"foo":"bar"}');       // returns an object, not an array.
146
RikkusRukkus

Versuche dies:

$data = json_decode($your_json_string, TRUE);

mit dem zweiten Parameter wird decodierter Json-String zu assoziativen Arrays.

76
sepidol

Wenn Sie den JSON-String mit $_REQUEST, $_GET oder $_POST aus dem Formular abrufen, müssen Sie die Funktion html_entity_decode() verwenden. Ich wusste dies nicht, bis ich einen var_dump von dem, was in der Anfrage enthalten war, und dem, was ich in eine echo-Anweisung kopierte, ausführte und bemerkte, dass die Anforderungszeichenfolge viel größer war.

Der richtige Weg:

$jsonText = $_REQUEST['myJSON'];
$decodedText = html_entity_decode($jsonText);
$myArray = json_decode($decodedText, true);

Mit Fehlern:

$jsonText = $_REQUEST['myJSON'];
$myArray = json_decode($jsonText, true);
echo json_last_error(); //Returns 4 - Syntax error;
22
jbeauchamp

Verwenden Sie die Funktion json_decode($json_string, TRUE), um das JSON-Objekt in ein Array zu konvertieren. 

Beispiel:

$json_string   = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

$my_array_data = json_decode($json_string, TRUE);

HINWEIS: Der zweite Parameter konvertiert dekodierte JSON-Zeichenfolge in ein assoziatives Array.

===========

Ausgabe:

var_dump($my_array_data);

array(5) {

    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}
10
Arslan Ramay

Wenn Sie mit file_get_contents einen json-String von der URL erhalten, führen Sie die folgenden Schritte aus:

$url = "http://localhost/rest/users";  //The url from where you are getting the contents
$response = (file_get_contents($url)); //Converting in json string
 $n = strpos($response, "[");
$response = substr_replace($response,"",0,$n+1);
$response = substr_replace($response, "" , -1,1);
print_r(json_decode($response,true));
5
piyush

ihre Zeichenfolge sollte das folgende Format haben:

$str = '{"action": "create","record": {"type": "n$product","fields": {"n$name": "Bread","n$price": 2.11},"namespaces": { "my.demo": "n" }}}';
$array = json_decode($str, true);

echo "<pre>";
print_r($array);

Ausgabe:

Array
 (
    [action] => create
    [record] => Array
        (
            [type] => n$product
            [fields] => Array
                (
                    [n$name] => Bread
                    [n$price] => 2.11
                )

            [namespaces] => Array
                (
                    [my.demo] => n
                )

        )

)
4
Dinanath Thakur
<?php
$str='{
    "action" : "create",
    "record" : {
                "type": "$product",
                "fields": {
                           "name": "Bread",
                           "price": "2.11"
                           },
                "namespaces": { "my.demo": "n" }
                }
    }';
echo $str;
echo "<br>";
$jsonstr = json_decode($str, true);
print_r($jsonstr);

?>

ich denke, das sollte funktionieren, es ist nur so, dass die Schlüssel auch in doppelte Anführungszeichen gesetzt werden sollten, wenn sie keine Ziffern sind.

1
Pradeep Dhawan

Sie können json Object in Array & String konvertieren.

$data='{"resultList":[{"id":"1839","displayName":"Analytics","subLine":""},{"id":"1015","displayName":"Automation","subLine":""},{"id":"1084","displayName":"Aviation","subLine":""},{"id":"554","displayName":"Apparel","subLine":""},{"id":"875","displayName":"Aerospace","subLine":""},{"id":"1990","displayName":"Account Reconciliation","subLine":""},{"id":"3657","displayName":"Android","subLine":""},{"id":"1262","displayName":"Apache","subLine":""},{"id":"1440","displayName":"Acting","subLine":""},{"id":"710","displayName":"Aircraft","subLine":""},{"id":"12187","displayName":"AAC","subLine":""}, {"id":"20365","displayName":"AAT","subLine":""}, {"id":"7849","displayName":"AAP","subLine":""}, {"id":"20511","displayName":"AACR2","subLine":""}, {"id":"28585","displayName":"AASHTO","subLine":""}, {"id":"45191","displayName":"AAMS","subLine":""}]}';

$b=json_decode($data);

$i=0;
while($b->{'resultList'}[$i])
{
    print_r($b->{'resultList'}[$i]->{'displayName'});
    echo "<br />";
    $i++;
}
1
Manav Akela

Wenn Sie JSON-Dateien oder -Strukturen in Arrays im PHP-Stil mit allen Verschachtelungsebenen konvertieren müssen, können Sie diese Funktion verwenden. Zuerst müssen Sie json_decode ($ yourJSONdata) und dann an diese Funktion übergeben. In Ihrem Browserfenster (oder der Konsole) werden die korrekten Arrays PHP ausgegeben.

https://github.com/mobsted/jsontophparray

1
Denis Volkov

Sie können eine Zeichenfolge wie folgt in JSON ändern.

$str     = '[{"id":1, "value":"Comfort Stretch"}]';
//here is JSON object
$filters = json_decode($str);

foreach($filters as $obj){
   $filter_id[] = $obj->id;
}

//here is your array from that JSON
$filter_id;
0
Shahrukh Anwar

dies meine Lösung: json string $columns_validation = string(1736) "[{"colId":"N_ni","hide":true,"aggFunc":null,"width":136,"pivotIndex":null,"pinned":null,"rowGroupIndex":null},{"colId":"J_2_fait","hide":true,"aggFunc":null,"width":67,"pivotIndex":null,"pinned":null,"rowGroupIndex":null}]"

also benutze ich json_decode zweimal so: 

$js_column_validation = json_decode($columns_validation);
$js_column_validation = json_decode($js_column_validation); 

var_dump($js_column_validation);

und das Ergebnis ist: 

 array(15) { [0]=> object(stdClass)#23 (7) { ["colId"]=> string(4) "N_ni" ["hide"]=> bool(true) ["aggFunc"]=> NULL ["width"]=> int(136) ["pivotIndex"]=> NULL ["pinned"]=> NULL ["rowGroupIndex"]=> NULL } [1]=> object(stdClass)#2130 (7) { ["colId"]=> string(8) "J_2_fait" ["hide"]=> bool(true) ["aggFunc"]=> NULL ["width"]=> int(67) ["pivotIndex"]=> NULL ["pinned"]=> NULL ["rowGroupIndex"]=> NULL }
0
Mourad MAMASSI

Verwenden Sie diesen Konverter. Er schlägt überhaupt nicht fehl: Services_Json

// create a new instance of Services_JSON
$json = new Services_JSON();

// convert a complexe value to JSON notation, and send it to the browser
$value = array('foo', 'bar', array(1, 2, 'baz'), array(3, array(4)));
$output = $json->encode($value);
print($output);
// prints: ["foo","bar",[1,2,"baz"],[3,[4]]]

// accept incoming POST data, assumed to be in JSON notation
$input = file_get_contents('php://input', 1000000);
$value = $json->decode($input);

// if you want to convert json to php arrays:
$json = new Services_JSON(SERVICES_JSON_LOOSE_TYPE);
0
Farhad Sakhaei

Stellen Sie sicher, dass die Zeichenfolge im folgenden JSON-Format vorliegt.

{"result":"success","testid":"1"} (with " ") .

Wenn nicht, können Sie "responsetype => json" in Ihre Anfrage-Parameter einfügen.

Verwenden Sie dann json_decode($response,true), um es in ein Array zu konvertieren.

0
unpokkolokko