我有一个Ruby端映射对象在一端序列化并在另一端接收。当在目标处收到时,我需要将其评估回原始的相同地图对象并进行一些处理。
但是,目标的评估失败,出现“语法错误,意外的$ end”消息。
失败,因为:application
符号引用UploadIO
对象。
鉴于我只能更改接收序列化对象的目标上的代码,解决问题的最佳方法是什么?将:application
的值转换为字符串或使用其他技巧?
eval ('
{"component"=>"CF",
"body"=>
["PUT",
"v2/apps/269e739c-5d08-429c-8682-d3200b79283b/bits",
{:payload=>
{
:resources=>"[]",
:application=>#<UploadIO:0x000000022af330 @content_type="application/zip">
}
}
]
}')
答案 0 :(得分:2)
您无法合理地对字符串执行eval
,因为#
正在作为注释字符处理。最直接的方法是继续将字符串中#<...>
的出现次数替换为在进行评估之前所需的任何内容。