2016-08-28 6 views
-1

現在、JSONファイルの作成、追加、変更、削除を行っています。私は配列ハッシュレベルの問題で完全に失われています。Perl配列とハッシュへの追加

私はこのように見て、JSONファイルを持っている:

{ 
    "pages": { 
    "page": [ 
     { 
     "PID": "84634572", 
     "UID": "2", 
     "menu_order": "65", 
     "status": "1", 
     "name": "Blabla", 
     "blocked": "0", 
     "frontpage": "1", 
     "content": [ 
      { 
      "block1": "test3", 
      "block2": "test2", 
      "block3": "test5", 
      "block4": "test1", 
      "block5": "test4" 
      } 
     ], 
     } 
    ] 
    } 
} 

私は、ファイルへのより多くのページを追加したい、と「PID」は始まる場所から文字列を構築する次のような方法が出ています、既存のファイルにそれをプッシュする前に:

my %rec_hash = (
    'PID'  => $PID, 
    'menu_order' => '1', 
    'status'  => '1', 
    'name'  => $name, 
    'content' => { 
     'block1' => $block1, 
     'block2' => $block2, 
     'block3' => $block3, 
     'block4' => $block4, 
     'block5' => $block5 
    } 
); 

これは方法で、動作しますが、私は「PID」の前に開始ブレース{を取得することはできません。どのように%rec_hash正しい方法を構築するための任意のヘルプ?

+1

JSONの作成にどのモジュールを使用しますか? [JSON :: PP](http://p3rl.org/JSON::PP)、[JSON :: XS](http://p3rl.org/JSON::XS)、[JSON :: Tiny](http ://p3rl.org/JSON :: Tiny)、[Cpanel :: JSON :: XS](http://p3rl.org/Cpanel::JSON::XS)、それ以外のものはありますか? – choroba

+0

あなたは 'page'と' content'の両方を1つのハッシュを含む配列として持っています。あれは正しいですか?同様に、 'page'は単一の配列' page'を含むハッシュとして持っています。 'pages'は配列でなければならず、' page'は余計なものか、他の誰かのデザインに結びついていると思いましたか? – Borodin

+1

あなたのjsonを人間のために最初にフォーマットするのはどうですか? http://codebeautify.org/jsonviewer/cb62c7cf –

答えて

0

必要なのは

push @{ $data->{pages}{page} }, \%rec_hash; 

あるしかし、あなたの%rec_hashには問題があります。ところで

my %rec_hash = (
    PID  => $PID, 
    UID  => $UID,    # <-- Was missing 
    menu_order => '1', 
    status  => '1', 
    name  => $name, 
    blocked => '0',    # <-- Was missing 
    frontpage => '1',    # <-- Was missing 
    content => [     # <-- Array was missing 
     { 
      'block1' => $block1, 
      'block2' => $block2, 
      'block3' => $block3, 
      'block4' => $block4, 
      'block5' => $block5, 
     }, 
    ], 
); 

、これは奇妙なデータ構造であるように思われます。

  • pagesは単一キー連想配列です。
  • 単数pageはページの配列です。
  • contentは、単一要素の配列です。
関連する問題