Thread Daten mit Config::Tiny einlesen und mit JSON::PP als JSON ausgeben (3 answers)
Opened by sitescriptor at 2011-03-04 23:02

sitescriptor
 2011-03-04 23:02
#146243 #146243
User since
2009-08-09
105 Artikel
BenutzerIn
[default_avatar]
Hallo, nach langer Zeit des Mitlesens muss ich mal wieder eine Frage stellen.
Ich habe das Gefühl, dass ich hier etwas falsch sehe oder einfach nicht verstehe:
Das Objekt Dotcar liest mit CPAN:Config::Tiny eine INI-Datei ein. Das Ergebnis ist korrekt und wird in $Self->{'tinyobj'} festgehalten.
Dann will ich $Self->{'tinyobj'} mittels CPAN:JSON::PP als JSON ausgeben. Diese Umwandlung klappt nicht, entweder bekomme ich "null" oder die Fehlermeldungen $Self->{'tinyobj'} sei ein Scalar oder ein Objekt, je nachdem welche Einstellungen ich für JSON::PP wähle.
Unten der sehr abgespeckte Code und der zughörige Dump:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package Sitescriptor::Module::Metatest::Dotcar;

use Thirdparty::Config::Tiny;
use Thirdparty::JSON::PP;
#
# das uebliche new() etc.....
#
sub upload_handler
    {
    my $Self = shift;
    #----
    $Self->{'tinyobj'} = Config::Tiny->new();   # Open the config
    $Self->{'tinyobj'} = Config::Tiny->read( $Self->{'tinyfilename'} ); # Create a config
    return ;
    }
    
sub json_handler
    {
    my $Self        = shift;
    #----
    if( exists $Self->{'tinyobj'} )
        {
        $Self->{'json'} = JSON::PP->new->ascii->allow_nonref->allow_blessed->encode( $Self->{'tinyobj'} );
        }
    return;
    }


Der Dump:

Code (perl): (dl )
1
2
3
4
5
6
Sitescriptor::Module::Metatest::Dotcar(Self); 
 = bless(   {
            "json" => "null",
            "tinyfilename" => "/Users/g/htdocs/_root_/aikxde/cgi-bin/tmp/20110304201025_1081-0.car",
            "tinyobj" => bless( { ... daten hier ... }, 'Config::Tiny_mod' )
            }, 'Sitescriptor::Module::Metatest::Dotcar' )


Packe ich da etwas grundsätzlich falsch an??

View full thread Daten mit Config::Tiny einlesen und mit JSON::PP als JSON ausgeben