🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
JsonDomSax.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "JsonSax.hpp"
25#include "JsonValue.hpp"
26#include <stack>
27#include <string>
28
29
30AST_NAMESPACE_BEGIN
31
32
40class AST_UTIL_API JsonDomSax : public JsonSax
41{
42public:
43 JsonDomSax();
44 JsonDomSax(JsonValue& result);
45 ~JsonDomSax() override = default;
46
48 const JsonValue& getResult() const;
49
51 bool hasError() const;
52
53
54 // SAX 事件处理
55 errc_t startObject() override;
56 errc_t endObject() override;
57 errc_t startArray() override;
58 errc_t endArray() override;
59 errc_t key(StringView key) override;
60 errc_t index(size_t index) override;
61 errc_t nullValue() override;
62 errc_t boolValue(bool value) override;
63 errc_t intValue(int value) override;
64 errc_t doubleValue(double value) override;
65 errc_t stringValue(StringView value) override;
66 errc_t parseError(StringView message) override;
67
68private:
69 // 错误/中止用的错误码
70 static const errc_t kStopParsing = -1;
71
73 JsonValue& currentValue();
74private:
75 bool error_ = false;
76 std::stack<JsonValue*> stack_;
77 JsonValue internalResult_;
78 JsonValue& result_;
79};
80
83AST_NAMESPACE_END
JSON 值类
基于 SAX 事件构建 JSON DOM 的类
定义 JsonDomSax.hpp:41
定义 JsonSax.hpp:34
virtual errc_t doubleValue(double value)
解析双精度浮点数值
定义 JsonSax.hpp:82
virtual errc_t key(StringView key)
解析对象键
定义 JsonSax.hpp:57
virtual errc_t stringValue(StringView value)
解析字符串值
定义 JsonSax.hpp:87
virtual errc_t index(size_t index)
解析数组索引
定义 JsonSax.hpp:62
virtual errc_t startArray()
开始解析数组
定义 JsonSax.hpp:48
virtual errc_t nullValue()
解析 null 值
定义 JsonSax.hpp:67
virtual errc_t startObject()
开始解析对象
定义 JsonSax.hpp:40
virtual errc_t boolValue(bool value)
解析布尔值
定义 JsonSax.hpp:72
virtual errc_t endArray()
结束解析数组
定义 JsonSax.hpp:52
virtual errc_t parseError(StringView message)
解析错误
定义 JsonSax.hpp:92
virtual errc_t intValue(int value)
解析整数值
定义 JsonSax.hpp:77
virtual errc_t endObject()
结束解析对象
定义 JsonSax.hpp:44
JSON 值类
定义 JsonValue.hpp:47