diff --git a/devtoolslib/perf_dashboard.py b/devtoolslib/perf_dashboard.py
index 68d87a3..defb54d 100644
--- a/devtoolslib/perf_dashboard.py
+++ b/devtoolslib/perf_dashboard.py
@@ -10,7 +10,6 @@
 See http://www.chromium.org/developers/speed-infra/performance-dashboard/sending-data-to-the-performance-dashboard.
 """
 
-from collections import defaultdict
 import httplib
 import json
 import pprint
@@ -28,18 +27,19 @@
   """
 
   def __init__(self, benchmark_name):
-    self.charts = defaultdict(list)
+    self.charts = {}
     self.benchmark_name = benchmark_name
 
   def record_scalar(self, chart_name, value_name, units, value):
     """Records a single measurement value of a scalar type."""
-    self.charts[chart_name].append({
+    if chart_name not in self.charts:
+      self.charts[chart_name] = {}
+    self.charts[chart_name][value_name] = {
         'type': 'scalar',
-        'name': value_name,
         'units': units,
-        'value': value})
+        'value': value}
 
-  def get_json(self):
+  def get_chart_data(self):
     """Returns the JSON string representing the recorded chart data, wrapping
     it with the required meta data."""
     chart_data = {
@@ -47,7 +47,7 @@
         'benchmark_name': self.benchmark_name,
         'charts': self.charts
     }
-    return json.dumps(chart_data)
+    return chart_data
 
 
 def add_argparse_server_arguments(parser):
diff --git a/devtoolslib/perf_dashboard_unittest.py b/devtoolslib/perf_dashboard_unittest.py
index b9c3b17..98714c9 100644
--- a/devtoolslib/perf_dashboard_unittest.py
+++ b/devtoolslib/perf_dashboard_unittest.py
@@ -5,7 +5,6 @@
 """Tests for the Chromium Performance Dashboard data format implementation."""
 
 import imp
-import json
 import os.path
 import sys
 import unittest
@@ -24,7 +23,7 @@
   def test_empty(self):
     """Tests chart data with no charts."""
     recorder = ChartDataRecorder('benchmark')
-    result = json.loads(recorder.get_json())
+    result = recorder.get_chart_data()
     self.assertEquals({
         'format_version': '1.0',
         'benchmark_name': 'benchmark',
@@ -36,7 +35,7 @@
     recorder.record_scalar('chart', 'val1', 'ms', 1)
     recorder.record_scalar('chart', 'val2', 'ms', 2)
 
-    result = json.loads(recorder.get_json())
+    result = recorder.get_chart_data()
     self.assertEquals('1.0', result['format_version'])
     self.assertEquals('benchmark', result['benchmark_name'])
 
@@ -45,14 +44,12 @@
     self.assertEquals(2, len(charts['chart']))
     self.assertEquals({
         'type': 'scalar',
-        'name': 'val1',
         'units': 'ms',
-        'value': 1}, charts['chart'][0])
+        'value': 1}, charts['chart']['val1'])
     self.assertEquals({
         'type': 'scalar',
-        'name': 'val2',
         'units': 'ms',
-        'value': 2}, charts['chart'][1])
+        'value': 2}, charts['chart']['val2'])
 
   def test_two_charts(self):
     """Tests chart data with two samples over two charts."""
@@ -60,7 +57,7 @@
     recorder.record_scalar('chart1', 'val1', 'ms', 1)
     recorder.record_scalar('chart2', 'val2', 'ms', 2)
 
-    result = json.loads(recorder.get_json())
+    result = recorder.get_chart_data()
     self.assertEquals('1.0', result['format_version'])
     self.assertEquals('benchmark', result['benchmark_name'])
 
@@ -69,12 +66,10 @@
     self.assertEquals(1, len(charts['chart1']))
     self.assertEquals({
         'type': 'scalar',
-        'name': 'val1',
         'units': 'ms',
-        'value': 1}, charts['chart1'][0])
+        'value': 1}, charts['chart1']['val1'])
     self.assertEquals(1, len(charts['chart2']))
     self.assertEquals({
         'type': 'scalar',
-        'name': 'val2',
         'units': 'ms',
-        'value': 2}, charts['chart2'][0])
+        'value': 2}, charts['chart2']['val2'])
diff --git a/mojo_benchmark b/mojo_benchmark
index 8413490..ff50689 100755
--- a/mojo_benchmark
+++ b/mojo_benchmark
@@ -6,11 +6,12 @@
 """Runner for Mojo application benchmarks."""
 
 import argparse
+import json
 import logging
-import sys
-import time
 import os.path
 import re
+import sys
+import time
 
 from devtoolslib import shell_arguments
 from devtoolslib import shell_config
@@ -244,7 +245,8 @@
         exit_code = 1
 
       if script_args.chart_data_output_file:
-        script_args.chart_data_output_file.write(chart_data_recorder.get_json())
+        script_args.chart_data_output_file.write(
+            json.dumps(chart_data_recorder.get_chart_data()))
         script_args.chart_data_output_file.write('\n')
 
   return exit_code
