blob: 42232bf543702059a7916cc2d17be27ade9dafd4 [file] [log] [blame]
license.botf003cfe2008-08-24 09:55:55 +09001// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
initial.commit3f4a7322008-07-27 06:49:38 +09004
mmentovai@google.comef3ae5a2008-08-07 00:46:49 +09005#ifndef BASE_JSON_WRITER_H_
6#define BASE_JSON_WRITER_H_
initial.commit3f4a7322008-07-27 06:49:38 +09007
8#include <string>
9
10#include "base/basictypes.h"
11
12class Value;
13
14class JSONWriter {
15 public:
16 // Given a root node, generates a JSON string and puts it into |json|.
17 // If |pretty_print| is true, return a slightly nicer formated json string
18 // (pads with whitespace to help readability). If |pretty_print| is false,
19 // we try to generate as compact a string as possible.
20 // TODO(tc): Should we generate json if it would be invalid json (e.g.,
21 // |node| is not a DictionaryValue/ListValue or if there are inf/-inf float
22 // values)?
23 static void Write(const Value* const node, bool pretty_print,
24 std::string* json);
25
26 private:
27 JSONWriter(bool pretty_print, std::string* json);
initial.commit3f4a7322008-07-27 06:49:38 +090028
29 // Called recursively to build the JSON string. Whe completed, value is
30 // json_string_ will contain the JSON.
31 void BuildJSONString(const Value* const node, int depth);
32
33 // Appends a quoted, escaped, version of str to json_string_.
34 void AppendQuotedString(const std::wstring& str);
35
36 // Adds space to json_string_ for the indent level.
37 void IndentLine(int depth);
38
39 // Where we write JSON data as we generate it.
40 std::string* json_string_;
41
42 bool pretty_print_;
mmentovai@google.comef3ae5a2008-08-07 00:46:49 +090043
44 DISALLOW_COPY_AND_ASSIGN(JSONWriter);
initial.commit3f4a7322008-07-27 06:49:38 +090045};
46
mmentovai@google.comef3ae5a2008-08-07 00:46:49 +090047#endif // BASE_JSON_WRITER_H_
license.botf003cfe2008-08-24 09:55:55 +090048