将键值对添加到perl中的现有json对象

时间:2016-05-25 13:12:45

标签: perl

我想将一个键值对添加到JSON对象。以下是下面代码的Param {Data}变量的结构。

    $VAR1 = {
  'ArticleID' => '86',
  'OldTicketData' => {
       ...
  },
  'TicketID' => '67'
};

以下是我想要执行上述操作的功能:

sub PrepareRequest {
    my ( $Self, %Param ) = @_;
    my %TicketInfo = $Self->{TicketObject}->ArticleGet(
        ArticleID => $Param{Data}->{ArticleID},
        userID => $Param{Data}->{CustomerID},
    );

    my %newParamData = to_json($Param{Data});
    %newParamData->{'OldTicketData'}->{'Body'}=$TicketInfo{Body};

    return {
        Success => 1,
        Data    => %newParamData,
    };
}

上面的函数返回' OldTicketData'。我想要关注附加到' OldTicketData' JSON对象的元素 - >(' Body',$ TicketInfo {Body})。考虑一下,$ TicketInfo {Body}返回一个字符串&some39'。

1 个答案:

答案 0 :(得分:3)

你的代码是错误的。在将其转换为JSON之前,首先需要将密钥添加到哈希引用中。

$Param{Data}->{'OldTicketData'}->{'Body'}=$TicketInfo{Body};
my $newParamData = to_json($Param{Data});

此外,由于to_json会返回一个标量字符串,因此您需要使用$newParamData代替%newParamData

当然,您还需要修复return

return {
    Success => 1,
    Data    => $newParamData,
};