2016-04-27 7 views
1

jsonにjsonとしてエコーする必要があるテーブルがあります。構造は次のとおりです。mysqlフィールドに格納されたjson文字列を取得します。

enter image description here

私は余分なスラッシュなしでJSON文字列としてデータを取得する方法は?私はPHPのparamsを処理したり、クエリを操作したりすることには興味がありません。データの格納に使用されています(多くの場合)、js側で使用されます。現時点では、ドキュメントベースのdbを使用することはできません。

stripslashesを使用してjsonを無効にしようとすると余分な引用符が残るため、「params」に問題があります。


<?php 
... 
$statement=$pdo->prepare("SELECT params FROM content WHERE id = 19"); 
$statement->execute(); 
$results=$statement->fetchAll(PDO::FETCH_ASSOC); 
$json=json_encode($results); 

$json = stripslashes($json); 
var_dump ($results); 
echo "<br/>"; 
echo $json; 
?> 
+0

コードを投稿してください。 – Sammitch

+0

私は現在使用しているものを追加しました。お探ししてありがとうございました – fran35

答えて

0

あなたのフィールドには、すでにJSON文字列です。これをエンコードすることで、有効なJSONが取得されません。このように

書き込み:このような

$data = array(); 
while($row = $statement->fetch(PDO::FETCH_ASSOC)) 
{ 
    $data[] = ['params'=>json_decode($row['params'])]; 
} 

$json = json_encode($data); 
echo $json; 

この意志出力JSON:

[ 
    {"params":{"sentence1":"city"}}, 
    (...) 
] 

あなたは「のparams」キーを保存したくない場合、あなたはこの方法で行うことができます:

$results=$statement->fetchAll(PDO::FETCH_ASSOC); 
$data = array_map('json_decode', array_column($results, 'params')); 
$json = json_encode($data); 
echo $json; 

これが出力されます。このようなJSON:

[ 
    {"sentence1":"city"}, 
    (...) 
] 
+0

Fusionのおかげで、jsonをエンコードするのが間違っています。私は確かに "params"キーを持っていたいと思います。 phpは私にエラーを与えています:Parse error:予期しない '['、$ data [] = ['params' => json_decode($ row ['params'])];それについてどんな考えですか? – fran35

+0

あなたのPHPのバージョンは? '$ data [] = array( 'params' => json_decode($ row ['params']));' – fusion3k

+0

これは間違いなく、ありがとう!ちょうど記録のために、バージョンは:5.3.29 – fran35

関連する問題