大佬教程收集整理的这篇文章主要介绍了Perl中的JSON格式,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
{ "success":"list of users maps","maps":[ { "id":"1","name":"Home to LE","date_created":"1366559121" },{ "id":"2","name":"Test 1","date_created":"1366735066" } ] }@H_438_2@my $maps = []; for (my $x = 0; $x < $sth->rows; $x++) { my ($id,$name,$datE) = $sth->fetchrow_array(); my $map = qq{{"id":"$id","name":"$name","date_created":"$date"}}; push $maps,$map; } my $j = JSON::XS->new->utf8; my $output = $j->encode({ "success"=>"list of users maps","maps"=>$maps });
但我得到的输出是:
{ "success":"list of users maps","maps":[ "{\"id\":\"1\",\"name\":\"Home to LE\",\"date_created\":\"1366559121\"}","{\"id\":\"2\",\"name\":\"Test 1\",\"date_created\":\"1366735066\"}" ] }
因此,当我在Javascript中处理它时,data.maps [x] .id是未定义的.我很确定输出的JSON格式不正确.
任何人都可以帮我修复它吗?
var maPDAta = JSON.parse(data.maps[x]); //do stuff with maPDAta.id
但更好的做法是确保它不会将其编码为字符串,而是将其编码为正确的JSON.
这部分在你的perl脚本中:
@H_438_2@my $map = qq{{"id":"$id","date_created":"$date"}};只是从所有数据中生成带引号的字符串.相反,你想要的是一个实际的perl哈希,可以转换成JSON map / associative-array.试试这个:
@H_438_2@my $map = { "id" => "$id","name" => "$name","date_created" => "$date" }; push $maps,$map;这样你实际上有一个perl哈希(而不仅仅是一个字符串)将被转换为适当的JSON.
作为一个例子,我写了一些测试代码:
use Strict; use JSON::XS; my $maps = []; push $maps,{ id => 1,blah => 2 }; push $maps,{ id => 3,blah => 2 }; my $j = JSON::XS->new->utf8->pretty(1); my $output = $j->encode({ success => "list of blah",maps => $maps }); print $output;
当你运行它时,你得到:
{ "success" : "list of blah","maps" : [ { "blah" : 2,"id" : 1 },{ "blah" : 2,"id" : 3 } ] }
以上是大佬教程为你收集整理的Perl中的JSON格式全部内容,希望文章能够帮你解决Perl中的JSON格式所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。