diff --git a/src/main/java/net/floodlightcontroller/firewall/FirewallRule.java b/src/main/java/net/floodlightcontroller/firewall/FirewallRule.java
index d9b26121690df67b26cb3121f5b7bc719cb4c936..127b9658d31cfb6a9d19b6cdabcee0f249e0c08a 100644
--- a/src/main/java/net/floodlightcontroller/firewall/FirewallRule.java
+++ b/src/main/java/net/floodlightcontroller/firewall/FirewallRule.java
@@ -1,5 +1,6 @@
 package net.floodlightcontroller.firewall;
 
+import org.codehaus.jackson.map.annotate.JsonSerialize;
 import org.openflow.protocol.OFMatch;
 
 import net.floodlightcontroller.packet.Ethernet;
@@ -8,6 +9,7 @@ import net.floodlightcontroller.packet.IPv4;
 import net.floodlightcontroller.packet.TCP;
 import net.floodlightcontroller.packet.UDP;
 
+@JsonSerialize(using=FirewallRuleSerializer.class)
 public class FirewallRule implements Comparable<FirewallRule> {
     public int ruleid;
 
diff --git a/src/main/java/net/floodlightcontroller/firewall/FirewallRuleSerializer.java b/src/main/java/net/floodlightcontroller/firewall/FirewallRuleSerializer.java
new file mode 100644
index 0000000000000000000000000000000000000000..98b566a081fe9ba7b1518b4bec74e605bb7715ad
--- /dev/null
+++ b/src/main/java/net/floodlightcontroller/firewall/FirewallRuleSerializer.java
@@ -0,0 +1,55 @@
+package net.floodlightcontroller.firewall;
+
+import java.io.IOException;
+
+import net.floodlightcontroller.packet.IPv4;
+import net.floodlightcontroller.util.MACAddress;
+
+import org.codehaus.jackson.JsonGenerator;
+import org.codehaus.jackson.JsonProcessingException;
+import org.codehaus.jackson.map.JsonSerializer;
+import org.codehaus.jackson.map.SerializerProvider;
+
+/**
+ * Serialize a FirewallRule object
+ * Implemented to output easily readable MAC, IP addresses
+ * @author Jason Parraga
+ */
+public class FirewallRuleSerializer extends JsonSerializer<FirewallRule> {
+
+    @Override
+    public void serialize(FirewallRule rule, JsonGenerator jGen,
+            SerializerProvider serializer) throws IOException,
+            JsonProcessingException {
+        jGen.writeStartObject();
+        
+        jGen.writeNumberField("ruleid", rule.ruleid);
+        jGen.writeNumberField("dpid", rule.dpid);
+        jGen.writeNumberField("in_port", rule.in_port);
+        jGen.writeStringField("dl_src",String.valueOf(MACAddress.valueOf(rule.dl_src)));
+        jGen.writeStringField("dl_dst", String.valueOf(MACAddress.valueOf(rule.dl_dst)));
+        jGen.writeNumberField("dl_type", rule.dl_type);
+        jGen.writeStringField("nw_src_prefix", IPv4.fromIPv4Address(rule.nw_src_prefix));
+        jGen.writeNumberField("nw_src_maskbits", rule.nw_src_maskbits);
+        jGen.writeStringField("nw_dst_prefix", IPv4.fromIPv4Address(rule.nw_dst_prefix));
+        jGen.writeNumberField("nw_dst_maskbits", rule.nw_dst_maskbits);
+        jGen.writeNumberField("nw_proto", rule.nw_proto);
+        jGen.writeNumberField("tp_src", rule.tp_src);
+        jGen.writeNumberField("tp_dst", rule.tp_dst);
+        jGen.writeBooleanField("wildcard_dpid", rule.wildcard_dpid);
+        jGen.writeBooleanField("wildcard_in_port", rule.wildcard_in_port);
+        jGen.writeBooleanField("wildcard_dl_src", rule.wildcard_dl_src);
+        jGen.writeBooleanField("wildcard_dl_dst", rule.wildcard_dl_dst);
+        jGen.writeBooleanField("wildcard_dl_type", rule.wildcard_dl_type);
+        jGen.writeBooleanField("wildcard_nw_src", rule.wildcard_nw_src);
+        jGen.writeBooleanField("wildcard_nw_dst", rule.wildcard_nw_dst);
+        jGen.writeBooleanField("wildcard_nw_proto", rule.wildcard_nw_proto);
+        jGen.writeBooleanField("wildcard_tp_src", rule.wildcard_tp_src);
+        jGen.writeBooleanField("wildcard_tp_dst", rule.wildcard_tp_dst);
+        jGen.writeNumberField("priority", rule.priority);
+        jGen.writeStringField("action", String.valueOf(rule.action));
+        
+        jGen.writeEndObject();
+    }
+
+}
\ No newline at end of file
diff --git a/src/main/java/net/floodlightcontroller/firewall/FirewallRulesResource.java b/src/main/java/net/floodlightcontroller/firewall/FirewallRulesResource.java
index 34d1b4df0cc64523173fbe35ab87be1c40fba91c..d7291a6ca6546a619aaca82c585136f2a4de9f10 100644
--- a/src/main/java/net/floodlightcontroller/firewall/FirewallRulesResource.java
+++ b/src/main/java/net/floodlightcontroller/firewall/FirewallRulesResource.java
@@ -23,7 +23,7 @@ public class FirewallRulesResource extends ServerResource {
     protected static Logger log = LoggerFactory.getLogger(FirewallRulesResource.class);
 
     @Get("json")
-    public Object handleRequest() {
+    public List<FirewallRule> retrieve() {
         IFirewallService firewall = 
                 (IFirewallService)getContext().getAttributes().
                 get(IFirewallService.class.getCanonicalName());