0

部分的なJSON応答を返すアプリケーションがある場合、オブジェクト/変数を1つに組み合わせるにはどうすればよいですか?


使ってます

$json = JSON->new->utf8->decode($response->content);

応答をオブジェクト/変数に変換しますが、それはそれぞれの単一のものです。


今、私はいくつかの部分的な応答を1つに結合するためにそれが必要です。

それを行う方法と、上書きを回避するために重複する可能性のあるアイテムを処理する方法は?


アップデート:

上記の問題をよりよく理解するには、以下のサンプル応答を参照してください。

すべての部分応答の構造は同じですが、、およびセクションのデータが 'Groups' 異なり 'Message' ます 'Data' 。最後の応答にはが付属してい 'Finished' = trueます。

$VAR1 = {
  'answer' => {
    'Error' => bless( do{\(my $o = 0)}, 'JSON::XS::Boolean' ),
    'Id' => 12345,
    'Finished' => $VAR1->{'answer'}{'Error'},
    'Groups' => [
      {
        'Code' => 'ABC',
        'RegNum' => 123,
        'Name' => 'John Doe'
      },
      {
        ...
      }
    ],
    'Message' => undef,
    'Data' => [
      {
        'Column1' => 'c1',
        'Column2' => 'c2'
      },
      {
        ...
      }
    ],
  }
}
4

2 に答える 2

0

これは JSON とはまったく関係ありません。2 つのデータ構造をマージします。あなたが言った小さなことから、マージする3つの配列があります。方法を指定しなかったので、単に新しい応答の要素を元の応答の要素に追加したいだけかもしれません。

for (qw( Groups Message Data )) {
   push @{ $orig->{answer}{$_} }, @{ $new->{answer}{$_} }
      if $new->{answer}{$_};
}
于 2013-01-12T17:57:59.617 に答える
0

Hash::Mergeでハッシュをマージできます

于 2013-01-11T23:16:31.330 に答える