Próbuję utworzyć obiekt JSON zawierający listę map skojarzonych z konkretnym użytkownikiem, ale nigdy nie pracował z zagnieżdżonymi obiektami JSON. To jest to, co chcę:Formatowanie JSON w Perlu
{
"success":"list of users maps",
"maps":[
{
"id":"1",
"name":"Home to LE",
"date_created":"1366559121"
},
{
"id":"2",
"name":"Test 1",
"date_created":"1366735066"
}
]
}
z tego kodu perl:
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
});
ale wyjście otrzymuję jest:
{
"success":"list of users maps",
"maps":[
"{\"id\":\"1\",\"name\":\"Home to LE\",\"date_created\":\"1366559121\"}",
"{\"id\":\"2\",\"name\":\"Test 1\",\"date_created\":\"1366735066\"}"
]
}
Więc kiedy przetwarza je w moim językiem JavaScript, data.maps [x] .id jest niezdefiniowany. Jestem całkiem pewien, że wynik JSON jest niepoprawnie sformatowany.
Czy ktoś może mi pomóc to naprawić?
Powinienem był realizowany ciąg wydawać się! Dzięki, zmieniłem skrypt Perla i teraz działa pięknie! – skeniver
Pamiętaj, że przed [Perl 5.14] (http://perldoc.perl.org/perl5140delta.html#Syntactical-Enhancements "perldoc perldelta5140") 'push $ maps, ...' musiałby być napisany jako 'push @ $ mapy, ... '. –