2016-05-25 13 views
-1

JSONオブジェクトにキー値のペアを追加します。以下は、以下のコードのParam {Data}変数の構造です。機能上perlの既存のjsonオブジェクトにキー値のペアを追加する

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':後

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

は、私が言及した操作を実行したい機能があります。 JSONオブジェクトの 'OldTicketData'要素に添付されたキーペアを後にしたい - >( 'Body'、$ TicketInfo {Body})。 $ TicketInfo {Body}は文字列 'someString'を返します。

答えて

3

コードが間違っています。まず、ハッシュリファレンスにキーを追加してからJSONに変換する必要があります。また

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

to_jsonがスカラーである文字列を返すために、あなたは$newParamDataの代わり%newParamDataを使用する必要があります。

もちろん、returnも修正する必要があります。

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

私はto_jsonが実際にjsonを含む文字列を返すと推測しています。 – ysth

+0

Ooops。私はそれを 'from_json'と混同しました。あなたの右の@ysth。 – simbabque

関連する問題