JSArrayParser: Add JSJSONArrayParser as new (and preferred) method to parse JSON
authorRalf Ertzinger <ralf@skytale.net>
Wed, 1 Dec 2010 20:30:40 +0000 (21:30 +0100)
committerRalf Ertzinger <ralf@skytale.net>
Wed, 1 Dec 2010 20:30:40 +0000 (21:30 +0100)
videosite/JSArrayParser.pm
videosite/JSJSONArrayParser.pm [new file with mode: 0644]

index 8f9b729..37452fe 100644 (file)
@@ -22,7 +22,17 @@ sub new {
     }
 
     # Try to find a child object which is available and return that.
-    #
+
+    # See if videosite::JSJSONArrayParser is available
+    eval {
+        require videosite::JSJSONArrayParser;
+    };
+
+    unless($@) {
+        # Available. Return a JSJSONArrayParser object
+        return videosite::JSJSONArrayParser->new(%params);
+    }
+
     # See if videosite::JSLexArrayParser is available
     eval {
         require videosite::JSLexArrayParser;
diff --git a/videosite/JSJSONArrayParser.pm b/videosite/JSJSONArrayParser.pm
new file mode 100644 (file)
index 0000000..052e325
--- /dev/null
@@ -0,0 +1,30 @@
+#
+# A helper class for parsing textual JS hashes into perl 
+# hashes
+#
+# This parser is based on the perl JSON module
+#
+
+package videosite::JSJSONArrayParser;
+
+use videosite::JSArrayParser;
+use JSON;
+@ISA = qw(videosite::JSArrayParser);
+
+use strict;
+
+sub new {
+    my $class = shift;
+    my $self = $class->SUPER::new();
+
+    return bless($self, $class);
+}
+
+sub parse {
+    my $self = shift;
+    my $s = shift;
+
+    return decode_json($s);
+}
+
+1;