wire up new json code in skiaserve

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1691773002

Review URL: https://codereview.chromium.org/1691773002
diff --git a/tools/skiaserve/skiaserve.cpp b/tools/skiaserve/skiaserve.cpp
index 6bc7cc7..4b2d52b 100644
--- a/tools/skiaserve/skiaserve.cpp
+++ b/tools/skiaserve/skiaserve.cpp
@@ -171,11 +171,11 @@
     return ret;
 }
 
-static int SendJSON(MHD_Connection* connection, SkDebugCanvas* debugCanvas, int n) {
+static int SendJSON(MHD_Connection* connection, SkDebugCanvas* debugCanvas,
+                    UrlDataManager* urlDataManager, int n) {
+    Json::Value root = debugCanvas->toJSON(*urlDataManager, n);
     SkDynamicMemoryWStream stream;
-    SkAutoTUnref<SkJSONCanvas> jsonCanvas(new SkJSONCanvas(kImageWidth, kImageHeight, stream));
-    debugCanvas->drawTo(jsonCanvas, n);
-    jsonCanvas->finish();
+    stream.writeText(Json::FastWriter().write(root).c_str());
 
     SkAutoTUnref<SkData> data(stream.copyToData());
     return SendData(connection, data, "application/json");
@@ -229,10 +229,15 @@
             return MHD_NO;
         }
 
-        // /cmd or /cmd/N or /cmd/N/[0|1]
-        if (commands.count() == 1 && 0 == strcmp(method, MHD_HTTP_METHOD_GET)) {
-            int n = request->fDebugCanvas->getSize() - 1;
-            return SendJSON(connection, request->fDebugCanvas, n);
+        // /cmd or /cmd/N
+        if (0 == strcmp(method, MHD_HTTP_METHOD_GET)) {
+            int n;
+            if (commands.count() == 1) {
+                n = request->fDebugCanvas->getSize() - 1;
+            } else {
+                sscanf(commands[1].c_str(), "%d", &n);
+            }
+            return SendJSON(connection, request->fDebugCanvas, &request->fUrlDataManager, n);
         }
 
         // /cmd/N, for now only delete supported