2017-03-23 4 views
1

mySQLデータベースから取得したphpのJson文字列を変換しようとしています。私はこの使用してjson_decodeのような他の文字列で成功してきたが、私はこの文字列をデコードしてみてください何らかの理由:json_decodeを使用して配列を文字列変換エラーにしています

$Json ='{"S1": "15,2,0,4,0,0,1","S2": "50,0,99,1,5,1,1,0"}'; 

json_decode($Json, true); 

私は、「文字列変換に配列」エラーが発生します。私は、この文字列で正常に同じことをやってきた

[{"group":"new","users":",12345678","S1":"56,3,0,0,0,6,0","S2":"0,0,49,0,4,0,0,0","enabled":"1","admin":"1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0"}] 

私は彼らの両方が同じデータベースから引き出され、両方が検証されているように、2つの違いは、あるかわかりませんJsonとして成功しました。誰かが私がどのようにしてこれを正常に変換してjson_decodeを正常に動作させることができるか教えてくれますか?ありがとう。

**更新:ここで私は

$tmpUserJson = $row['JSONSettings’];  

$tmpUserJson='['.$tmpUserJson.']'; ///I’ve tried with and without brackets  

echo $tmpUserJson; //returns {"S1":"15,2,0,4,0,0,1","S2":"50,0,99,1,5,1,1,0”}  

$userJson = json_decode($tmpUserJson , true);  

echo $userJson['S1']; // returns Notice: Array to string conversion  
+0

'[]'は配列を作成します。私は '{}'が省略配列の構築には使われていませんが、同じことをしているように見えます。 – chris85

+0

私はあなたのコードを実行する場合、私はこのエラーが発生しません - あなたは確かに、エラーをスローするコードを投稿しますか? – Philipp

+0

私は正確な文字列を試しましたが、エラーなしで結果を得る...私が考えることができるのはmysql_escape_stringだけです。投稿された文字列がmysqlから出力されたものであるかどうかを確認してください...または二重引用符がエスケープされています... – Ahmad

答えて

1

を使用している実際のコードは、私はあなたが配列をエコーし​​ようとしているので、あなたがそれを得ると思うのです。 試してみてください。

$Json ='{"S1": "15,2,0,4,0,0,1","S2": "50,0,99,1,5,1,1,0"}'; 

$Json = json_decode($Json); 

foreach($Json as $item){ 
    echo $item. "<br />"; 
} 

それとも、あなたの結果のvar_dumpことができます。 $ JSON = '{ "S1": "15,2,0,4,0,0,1"、 "S2":「50を、 0,99,1,5,1,1,0 "} ';

$Json = json_decode($Json); 

var_dump($Json); 
+0

ありがとう!それが問題でした。 – Sadie

+0

問題はありません。うれしく思っています。 –

1
$userJson = json_decode($tmpUserJson , true);// this line return an associative array  

echo $userJson; // echo can't echo out an array that's why you got that error 

@デビッドは、前述のように、あなたが$userJsonをエコーし​​たいならば、あなたはオプションのカップルがあります:テストの目的のためにforeach($userJson as $value){ echo $value;}
2:
1:配列要素などをループを
var_dump($userJson)またはprint_r($userJson)を使用して$userJsonのデータを表示できます。 幸運

関連する問題