0

拥有一个返回部分 JSON 响应的应用程序,我如何将对象/变量组合成一个?


我在用

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

将响应转换为对象/变量,但这是针对每个单独的。


现在我需要它将几个部分响应合并为一个。

如何做到这一点以及如何处理可能的重复项以避免覆盖?


更新:

为了更好地理解上述问题,请参阅下面的示例响应。

每个部分响应具有相同的结构,但 和 部分中的 '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

您可以通过Hash::Merge合并哈希

于 2013-01-11T23:16:31.330 回答
0

这与 JSON 完全无关。您想要合并两个数据结构。从你说的一点点来看,有三个数组要合并。您没有指定如何,所以也许您只是想将新响应的元素附加到原始响应的元素。

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