verschachteltes JSON-Objekt in PHP erstellen?

Lesezeit: 3 Minuten

verschachteltes JSON Objekt in PHP erstellen
Shane

Ich arbeite nicht viel mit PHP und bin ein wenig unscharf bei der Objekterstellung. Ich muss eine Webservice-Anfrage senden, die json sendet, und ich denke, ich habe diesen Teil abgedeckt. Bevor ich die Daten übermitteln kann, muss ich ein verschachteltes Objekt erstellen. Ich ging davon aus, dass dies aufgrund meiner Erfahrung mit ecma-basierten Skriptsprachen trivial wäre, aber ich finde die Syntax schwierig zu navigieren. Das Objekt, das ich erstellen möchte, ist unten.

{ "client": {
    "build": "1.0",
    "name": "xxxxxx",
    "version": "1.0"
    },
    "protocolVersion": 4,
    "data": {
        "distributorId": "xxxx",
        "distributorPin": "xxxx",
        "locale": "en-US"
    }
}

Ich habe viele Beispiele für flache Objekte gesehen, aber ich habe noch kein Minimalbeispiel für ein verschachteltes Objekt gefunden. Was wäre die PHP-Syntax für das obige Objekt? Ist dies eine ungewöhnliche Sache in PHP?

Diese JSON-Struktur kann durch folgenden PHP-Code erstellt werden

$json = json_encode(array(
     "client" => array(
        "build" => "1.0",
        "name" => "xxxxxx",
        "version" => "1.0"
     ),
     "protocolVersion" => 4,
     "data" => array(
        "distributorId" => "xxxx",
        "distributorPin" => "xxxx",
        "locale" => "en-US"
     )
));

sehen json_encode

1647896047 413 verschachteltes JSON Objekt in PHP erstellen
Guillermo Tallano

Hey, hier ist ein schneller Trick, um komplexe JSONs manuell in ein PHP-Objekt zu konvertieren.

Holen Sie sich das JSON-Beispiel so, wie Sie es haben:

{ "client": {
    "build": "1.0",
    "name": "xxxxxx",
    "version": "1.0"
    },
    "protocolVersion": 4,
    "data": {
        "distributorId": "xxxx",
        "distributorPin": "xxxx",
        "locale": "en-US"
    }
}

Suchen-Ersetzen { zu array(

Suchen-Ersetzen : zu =>

Suchen-Ersetzen } zu )

Getan.

  • Dies ist ein riskanter Ansatz. Sie könnten möglicherweise Zeichen unbeabsichtigt ersetzen, dh. {"version":"1.0:beta"} umwandeln würde array("version"=>"1.0=>beta"). Was beabsichtigen Sie außerdem mit der konvertierten Zeichenfolge zu tun? Wenn Sie es beabsichtigen eval() it, das könnte sehr gefährlich sein, besonders wenn die Eingabe von einer unzuverlässigen Quelle stammt, siehe stackoverflow.com/questions/951373/when-is-eval-evil-in-php

    – Francis Eytan Dortort

    12. August 2019 um 14:18 Uhr

Verwenden Sie ein Array, um das richtige Format zu erhalten, und rufen Sie dann echo json_encode (array) auf.

           array( "client" => array(
    "build" => "1.0",
    "name" => "xxxxxx",
    "version" => "1.0"
 ),
 "protocolVersion" => 4,
 "data" => array(
    "distributorId" => "xxxx",
    "distributorPin" => "xxxx",
    "locale" => "en-US"
 ))

verschachteltes JSON Objekt in PHP erstellen
ilikemypizza

$client = new Client();
$client->information = new Information();
$client->information->build = '1.0';
$client->information->name="xxxxxx";
$client->information->version = '1.0';
$client->protocolVersion = 4;
$client->data = new Data();
$client->data->distributorId = "xxxx";
$client->data->distributorPin = "xxxx";
$client->data->locale = "en-US";

Vielleicht so etwas wie oben? Der Client würde zwei Objekte halten. Informationen und Daten.

Bearbeiten

Mit json_encode würden Sie dieses Objekt als Array in PHP erstellen.

$clientObj = array('client'=> 
    array( array('build'=>'1.0','name'=>'xxxx', 'version'=>'1.0'), 

           'protocolVersion'=>4, 

           'data'=>array('distributorId' => 'xxxx', 'distributorPin' => 'xxxx', 'locale' => 'en-US')
);

print json_encode($clientObj);

1647896048 816 verschachteltes JSON Objekt in PHP erstellen
MSVKC

Wir können auch ein verschachteltes Array erstellen und dann einen json_encode ausführen, um verschachteltes JSON zu erstellen.

Zum Beispiel:

{"User":
       {"username":"test",
        "address":"Posted value fro address field",
        "location":{
                     "id":12345
                    }
        }
}

Die obige Ausgabe können wir erreichen, indem wir den folgenden PHP-Code schreiben:

<?php
$obj = array(
            'username'=>$lv_username,
            'address'=>$lv_address,
            'location'=>array('id'=>$lv_locationId)
    );
$data="{"User":". json_encode($obj) .'}';
echo $data;

?>

Ich hoffe es hilft.

verschachteltes JSON Objekt in PHP erstellen
Code Lღver

Verwenden Sie die In-Build-Funktion von PHP:

json_encode();

Dadurch wird das Array in ein JSON-Objekt konvertiert.

1647896049 571 verschachteltes JSON Objekt in PHP erstellen
Martin

Sie können json_encode verwenden, um ein PHP-Array zu codieren
http://php.net/manual/en/function.json-encode.php

$theArray = array('client'= array('build'=>'1.0', 
                                'name'=>'xxxxx', 
                                'version'=>'1.0'
                               ), 
                'protocolVersion'=> 4, 
                'data'=> array('distributorId'=>'xxxx', 
                               'distributorPin'=>'xxxx', 
                               'locale'=>'en-US' 
                               ) 
                );

$theObj = json_encode($theArray);

hoffentlich hilft das..

gepostet, dann schon jede Menge Antworten gesehen! 😐

1005410cookie-checkverschachteltes JSON-Objekt in PHP erstellen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy