2010-12-13 13 views
0

私はテーブルフィールドのデータとmakint json_encodeでjson_encodeでエンコーディングしながら、このjsonもエンコードされ、有効なjsonではないので、テーブルのフィールドにこの{background:"default.jpg"}をデータベースに格納していますこれらのjsonをエンコードします。json encode in php

{"id_session":"c72b0581e7675b596a7651a7bb906438","gibid":"54","name":"Market Place","type":"S","num_owners":"0","inner_template":"","inner_data":"{background:\"default.jpg\"}","outer_template":"","o 

有効なjsonを返すにはスラッシュを追加する必要があります。

ありがとうございました。

+0

echo json_decode( '{background: "default.jpg"}'、true);アレイを返さないのはなぜですか? – XMen

答えて

2
  1. JSONをデータベースに保存しないでください。キー/値の列などの中立の形式で保存してください。または:
  2. JSONをデコードし、エンコードする配列にマージしてエンコードします。

    $data = array('id' => ...); 
    $data['inner_data'] = json_decode($databaseJson, true); 
    json_encode($data); 
    
+0

echo json_decode( '{background: "default.jpg"}'、true); なぜ配列を返さないのですか? – XMen

+1

'{background:" default.jpg "}"は有効なJSONではないためです。 http://www.jsonlint.com/を参照してください。有効な形式は '{" background ":" default.jpg "}' – Mchl

+0

です。ありがとうございます.Mchl、データベースにjsonを保存しないと、キーと値のニュートラルフォーマットを教えています。 – XMen

0

だからあなたは、データベース内のJSON文字列を持っていると、あなたはそれからそれを取得し、再びIRにjson_ecnodeしていますか? PHPの場合は、文字列をエンコードするだけです(引用符のバックスラッシュが出てくる理由)。

しかし、あなたが実際に望むものを達成するためには、まずデータベースからJSON文字列をデコードしてから、残りのデータをもう一度エンコードすることができます。

+0

echo json_decode( '{background: "default.jpg"}'、true);アレイを返さないのはなぜですか? – XMen

+0

decezeの答えに対する 'Mchlのコメントを参照してください。彼は彼のコメントで正しいです。 – enricog