Changed JSON formatting more, workaround bug where SkStringPrintf causes encoding issues

BUG=skia:
R=bensong@google.com, jcgregorio@google.com, reed@google.com, bsalomon@google.com

Author: kelvinly@google.com

Review URL: https://codereview.chromium.org/294093002

git-svn-id: http://skia.googlecode.com/svn/trunk@14808 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/bench/ResultsWriter.h b/bench/ResultsWriter.h
index b04c8ff..a9eef80 100644
--- a/bench/ResultsWriter.h
+++ b/bench/ResultsWriter.h
@@ -81,7 +81,7 @@
 /**
  * This ResultsWriter handles writing out the results in JSON.
  *
- * The output looks like:
+ * The output looks like (except compressed to a single line):
  *
  *  {
  *   "options" : {
@@ -90,9 +90,12 @@
  *      ...
  *      "system" : "UNIX"
  *   },
- *   "results" : {
- *      "Xfermode_Luminosity_640_480" : {
- *         "565" : {
+ *   "results" : [
+ *      {
+ *      "name" : "Xfermode_Luminosity_640_480",
+ *      "results" : [
+ *         {
+ *            "name": "565",
  *            "cmsecs" : 143.188128906250,
  *            "msecs" : 143.835957031250
  *         },
@@ -113,7 +116,9 @@
         if(search_results != NULL) {
             return search_results;
         } else {
-            return &(root->append(Json::Value()));
+            Json::Value* new_val = &(root->append(Json::Value()));
+            (*new_val)["name"] = name;
+            return new_val;
         }
     }
 public:
@@ -128,15 +133,17 @@
         fRoot["options"][name] = value;
     }
     virtual void bench(const char name[], int32_t x, int32_t y) {
-        const char* full_name = SkStringPrintf( "%s_%d_%d", name, x, y).c_str();
-        Json::Value* bench_node = find_named_node(&fResults, full_name);
-        (*bench_node)["name"] = full_name;
+        SkString sk_name(name);
+        sk_name.append("_");
+        sk_name.appendS32(x);
+        sk_name.append("_");
+        sk_name.appendS32(y);
+        Json::Value* bench_node = find_named_node(&fResults, sk_name.c_str());
         fBench = &(*bench_node)["results"];
     }
     virtual void config(const char name[]) {
         SkASSERT(NULL != fBench);
         fConfig = find_named_node(fBench, name);
-        (*fConfig)["name"] = name;
     }
     virtual void timer(const char name[], double ms) {
         SkASSERT(NULL != fConfig);
@@ -144,10 +151,11 @@
     }
     virtual void end() {
         SkFILEWStream stream(fFilename.c_str());
-        stream.writeText(fRoot.toStyledString().c_str());
+        stream.writeText(Json::FastWriter().write(fRoot).c_str());
         stream.flush();
     }
 private:
+
     SkString fFilename;
     Json::Value fRoot;
     Json::Value& fResults;
diff --git a/include/utils/SkJSONCPP.h b/include/utils/SkJSONCPP.h
index 966d064..0582e8f 100644
--- a/include/utils/SkJSONCPP.h
+++ b/include/utils/SkJSONCPP.h
@@ -21,6 +21,7 @@
 #endif
 #include "json/reader.h"
 #include "json/value.h"
+#include "json/writer.h"
 #ifdef SK_BUILD_FOR_WIN
     #pragma warning(pop)
 #endif