我使用 Laravel (Lumen) 创建了一个 REST API。基本上我从数据库中获取一些值并需要执行一些功能。这就是问题所在。在我的结果集中有一个名为 web_data 的字段。这是 Perl 代码。这是我使用普通 SQL 编辑器(如 phpmyadmin 和 workbench)查询数据库时的样子。
{"caption" => "Genes (Comprehensive set from GENCODE 26)","colour_key" => "[biotype]","default" => {"MultiBottom" => "collapsed_label","MultiTop" => "gene_label","alignsliceviewbottom" => "as_collapsed_label","contigviewbottom" => "transcript_label","contigviewtop" => "gene_label","cytoview" => "gene_label"},"key" => "ensembl","label_key" => "[biotype]","multi_name" => "GENCODE 26 Comprehensive gene set","name" => "Comprehensive Gene Annotations from GENCODE 26"}
这很清楚,没有错。但是当我通过我的 REST API 得到相同的结果时,我得到了以下输出。它有许多“\”符号。这是输出。
{\"caption\" => \"Genes (Comprehensive set from GENCODE 26)\",\"colour_key\" => \"[biotype]\",\"default\" => {\"MultiBottom\" => \"collapsed_label\",\"MultiTop\" => \"gene_label\",\"alignsliceviewbottom\" => \"as_collapsed_label\",\"contigviewbottom\" => \"transcript_label\",\"contigviewtop\" => \"gene_label\",\"cytoview\" => \"gene_label\"},\"key\" => \"ensembl\",\"label_key\" => \"[biotype]\",\"multi_name\" => \"GENCODE 26 Comprehensive gene set\",\"name\" => \"Comprehensive Gene Annotations from GENCODE 26\"}
你能告诉我这是什么原因吗?这是 PHP 的问题还是类似的问题?
而且我还有另一个问题。这是包含“=>”符号以分隔值的 Perl 代码。我需要使用 PHP 将其转换为 JSON 对象。那可能吗 ?需要像以下对象一样转换。
{ "caption" : "Genes (Comprehensive set from GENCODE 26)", "colour_key" : "[biotype]", "default" : { "MultiBottom" : "collapsed_label" ...
这是我用来使用 SQL 数据创建 REST 输出的 php 代码。
public function testDualDatabaseConnection()
{
$testGene = DB::connection('mysql2')->select('select a.analysis_id, logic_name, ad.description, ad.display_label, ad.web_data FROM ( select distinct(analysis_id) as analysis_id from gene ) as a join analysis on (a.analysis_id = analysis.analysis_id) join analysis_description as ad on (analysis.analysis_id = ad.analysis_id) where ad.displayable = :wow1', ['wow1' => "1"]);
return response()->json($testGene);
}
这也是我通过 REST API 获得的完整 JSON 输出。https://gist.github.com/chanakaDe/0d1e5916d8bc788bb101afa9b92dc9cd
在此响应中,您可以看到“web_data”,这也是我需要再次转换为 JSON 的部分。
不确定逃逸发生在哪里(如果可以,请提供更多详细信息)
但是,尝试更换=>
与:
和\"
与"
你就会有自己一个有效的JSON。
$string = '{\"caption\" => \"Genes (Comprehensive set from GENCODE 26)\",\"colour_key\" => \"[biotype]\",\"default\" => {\"MultiBottom\" => \"collapsed_label\",\"MultiTop\" => \"gene_label\",\"alignsliceviewbottom\" => \"as_collapsed_label\",\"contigviewbottom\" => \"transcript_label\",\"contigviewtop\" => \"gene_label\",\"cytoview\" => \"gene_label\"},\"key\" => \"ensembl\",\"label_key\" => \"[biotype]\",\"multi_name\" => \"GENCODE 26 Comprehensive gene set\",\"name\" => \"Comprehensive Gene Annotations from GENCODE 26\"}';
$string = str_replace('\"','"', $string);
$string = str_replace('=>',':', $string);
$json = json_decode($string, true);
print_r($json);
你可以在这里查看:https : //3v4l.org/UBmGA
显然,这个答案比我预期的更令人讨厌。尽管如此,它确实对 OP 有所帮助,而且我一直在坚持。最后,这就是 SO 代表的意思。
我想知道……为什么这么多downvotes?我确实很好地接受了建设性的批评,并想知道如何改进未来的答案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句