2016-08-30 23 views
3

この質問をよく知っていますが、これまでに何度も尋ねていますが、それでも私はこの問題を解決できません。 私はJSONを持っていると私は$TenentsAccessibleをダンプするとき、出力は私がTenantIDプロパティ内の値を取得する必要があり、このJsonのデコードがnull値を返す

string(71) "[{`TenantID`:`test.com`,`Name`:`12thdoor`}]" 

です。私はPHPの配列にこれを変換するには、JSONのデコードを使用しますが、戻りnull

$jnTenant = json_decode($TenentsAccessible,TRUE);   
$tenantID = $jnTenant["TenantID"]; 
var_dump($jnTenant); // this return null 

私は質問のこのタイプは前に聞いて知っているが、私、この

$TenentsAccessible = str_replace('"', '"', $TenentsAccessible); 
$TenentsAccessible=preg_replace('/\s+/', '',$TenentsAccessible); 

を使用して&quotし、不要な文字を削除しようとしていますまだこれを動作させることができませんでした。馬を適切にしなさい。おかげ

+3

JSONが無効です。 JSONはバッククォート( '\' ')ではなくプロパティ名と文字列の周りに' ''を使用します。有効なバージョンは '[{" TenantID ":" test.com "、" Name ":" 12thdoor "}]' ' –

+0

あなたはjson_encodeを使ってそれをエンコードしましたか? –

+0

http://php.net/manual/en/function.json-last-error.phpで戦利品を取ってください。このエラーは@TJCrowderの言うとおり、json – Perry

答えて

2

JsonLintでjsonコードを確認できます。

あなたのコードを試しましたが、これはバッククォート( `)のために正しくありません。

だから、あなたが彼の答えで説明ハサンよう

[{ 
    "TenantID": "test.com", 
    "Name": "12thdoor" 
}] 

を持っている( ")で置き換える必要があり、json_decodeはそうTenantIDを取得するには、多次元配列を返します。

$jnTenant = json_decode('[{"TenantID":"test.com","Name":"12thdoor"}]',true);   
$tenantID = $jnTenant[0]['TenantID']; 
var_dump($tenantID) ; 

あなたの場合あなたが記述した方法で "TenantID"を取得したい場合は、このようなjsonを修正する必要がある場合は、

{ 
    "TenantID": "test.com", 
    "Name": "12thdoor" 
} 

希望します。

1

はそれを試してください:

$jnTenant = json_decode('[{"TenantID":"test.com","Name":"12thdoor"}]',true);   
$tenantID = $jnTenant[0]['TenantID']; 
var_dump($tenantID) ; 

正しいJSONとはJSONを取得corect!

がこのvaribaleが二次元配列であるprint_r($jnTenant);

plzは理解のために。

関連する問題