2017-01-29 6 views
0

PHPさらにはLaravelフレームワーク(Laravelがこの種のタスクにいくつかのユーティリティクラスを提供するかどうかはわかりません)。私はからJavaに来ました。PHPでJSONオブジェクトを解析するにはどうすればよいですか?このJSONオブジェクトの特定の部分の値を取得するにはどうすればよいですか?

だから私は次のような問題があります。私は、REST Webサービスにこのような何か呼び出しを行うクラスに

を:

$response = $client->get('http://localhost:8080/Extranet/login', 
     [ 
      'auth' => [ 
       '[email protected]', 
       'pswd' 
      ] 
     ]); 

    $dettagliLogin = json_decode($response->getBody()); 

    \Log::info('response: '.(json_encode($dettagliLogin))); 

$対応 - > getBody()をが含まれています

{ 
    "id":5, 
    "userName":"Dummy User", 
    "email":"[email protected]", 
    "enabled":true 
} 
JSONオブジェクト返され、これは以前の \ログイン::情報の出力()です

だから私は、次のような問題があります正確にjson_decode()関数を返す何

1)?私はPHPが強く型付けされていないので、私は理解できません。私は宣言された戻り値の型を持っていません。

これは、メソッドシグネチャである:

function json_decode($json, $assoc = false, $depth = 512, $options = 0) 

および関連するドキュメントでは、@return混合言います。何を意味するのか

2)とにかく主な問題がある:私はJSONオブジェクトを返され、このような配列の関連分野にこれらの値を入れて、前のコンテンツを使用する必要があります。

$attributes = array(
    'id' => HERE THE id FIELD VALUE OF MY JSON OBJECT, 
    'username' => HERE THE email FIELD VALUE OF MY JSON OBJECT', 
    'name' => HERE THE userName FIELD VALUE OF MY JSON OBJECT, 
    ); 

だから私は思いますこれらの値を取得するには、$ response-> getBody()またはjson_decode($ response-> getBody())の値を解析する必要があります。しかし、私はそれをどのように正確に行うことができますか?それを行うためのより純粋な方法は何ですか? Laravel fframeworkはそれを行うためのユーティリティを提供していますか?

TNX

+0

(Javaはふりをしてもあります)。 [JSON](https://en.wikipedia.org/wiki/JSON)は、いくつかのデータ構造のテキスト表現です。これを使用して、生成に使用されたデータ構造を再作成できます。 – axiac

+0

どのように見えるかを知る最も速い方法は、ちょうど $ dettagliLogin = json_decode($ response-> getBody()); 'dd($ dettagliLogin);' これはJSONのデコードされた変数を出力するので、これは何かを見ることができます。それは、オブジェクト、配列、番号、応答に依存することができます。 – fureszpeter

+0

私の答えはあなたを助けましたか? –

答えて

2

まず、JSONとは何ですか? これは、オブジェクト(配列、オブジェクトなど)を文字列で表現する方法です。

1)json_decode()関数は正確に何を返しますか?私は実際に を理解できません。なぜなら、PHPは強く型付けされておらず、宣言されていないからです。 戻り値の型です。これはメソッドシグネチャです。

function json_decode($ json、$ assoc = false、$ depth = 512、$ options = )、関連ドキュメントには@returnが混在しています。何がきちんと を意味するのでしょうか?

json_deocdeは、JSON文字列を、それが表す元の「構造」に変換します。

@return mixedは、json_decodeの戻り値が任意の型の変数であることを意味します。 JSONが配列を表す場合、それはオブジェクトを表す場合は配列型になり、オブジェクト型になります。

2)とにかく主な問題はある:配列=

$属性:私は、JSONオブジェクトを返し、このような配列の関連 フィールドにこれらの値を入れる前の のコンテンツを使用する必要がありますここで私のJSONオブジェクトのユーザーフィールド値、ここでは、私のJSONオブジェクトのフィールド値、 'id' =>ここで私のJSONオブジェクトのidフィールド値、 'username' =>ここに私のJSONオブジェクトのメールフィールド値 '、 ' );

JSONが表す変数のタイプを確認するには、var_dump(json_decode($json));を使用できます。とにかく、それはクラスオブジェクトです。したがって

: "JSONオブジェクト" のようなものはありません

$object = json_decode($json); 

$attributes = array(
    'id' => $object->id, 
    'username' => $object->email, 
    'name' => $object->userName, 
    ); 
1

あなたはjson文字列は、それが(タイプstdClassの)オブジェクトを返しますオブジェクト(ない配列)である場合。 Mixedは複数のことができることを意味するので、json配列の場合は配列を取得します。

あなたが実際に何を得るかを確認するには、json_decode、次にvar_dump(または)を使用することをお勧めします。

関連する問題