48 std::vector<std::pair<std::string, json_value>>
members;
50 json_value() =
default;
88 const json_value &
operator[](std::string_view key)
const;
98 json_value *
find(std::string_view key);
101 bool has(std::string_view key)
const;
112 json_value &
set(std::string_view key, json_value value);
117 json_value &
push(json_value value);
126 bool bool_or(
bool fallback)
const {
return kind ==
boolean ?
b : fallback; }
130 return kind ==
string ?
str.c_str() : fallback;
bool json_save(const char *path, const json_value &value, bool pretty=true)
Ghi một giá trị ra file JSON, tạo thư mục cha nếu cần.
bool json_parse(std::string_view text, json_value &out, std::string *error=nullptr)
Đọc JSON từ chuỗi.
bool json_load(const char *path, json_value &out)
Đọc và phân tích một file JSON.
std::string json_dump(const json_value &value, bool pretty=true)
Viết giá trị ra chuỗi JSON.
std::int64_t i64
Số nguyên có dấu 64 bit.
Definition _types.h:15
double f64
Số thực 64 bit.
Definition _types.h:29
std::int32_t i32
Số nguyên có dấu 32 bit.
Definition _types.h:14
std::size_t usize
Số nguyên không dấu cỡ con trỏ, dùng cho kích thước và chỉ số.
Definition _types.h:34
float f32
Số thực 32 bit.
Definition _types.h:28
std::uint32_t u32
Số nguyên không dấu 32 bit.
Definition _types.h:22
Một giá trị JSON: null, bool, số, chuỗi, mảng hoặc object.
Definition njin_json.h:33
std::string str
Giá trị khi kind == string.
Definition njin_json.h:46
json_value * find(std::string_view key)
Thành viên có tên key để sửa, hoặc null nếu không có.
std::vector< std::pair< std::string, json_value > > members
Thành viên khi kind == object, theo thứ tự.
Definition njin_json.h:48
json_value(bool v)
Giá trị bool.
Definition njin_json.h:52
json_value(const char *v)
Chuỗi. null trở thành giá trị null.
Definition njin_json.h:64
bool has(std::string_view key) const
Có thành viên tên key không.
f64 number_or(f64 fallback) const
Số, hoặc fallback nếu không phải số.
Definition njin_json.h:120
json_value(i32 v)
Giá trị số.
Definition njin_json.h:54
const char * string_or(const char *fallback) const
Chuỗi, hoặc fallback nếu không phải chuỗi.
Definition njin_json.h:129
bool bool_or(bool fallback) const
Bool, hoặc fallback nếu không phải bool.
Definition njin_json.h:126
kind_t
Loại giá trị.
Definition njin_json.h:35
@ number
Số, trong num.
Definition njin_json.h:38
@ object
Object, trong members.
Definition njin_json.h:41
@ string
Chuỗi UTF-8, trong str.
Definition njin_json.h:39
@ array
Mảng, trong items.
Definition njin_json.h:40
@ null
Không có giá trị. Cũng là kết quả khi đọc khóa không tồn tại.
Definition njin_json.h:36
@ boolean
true hoặc false, trong b.
Definition njin_json.h:37
json_value(f32 v)
Giá trị số.
Definition njin_json.h:60
i32 int_or(i32 fallback) const
Số nguyên (làm tròn về 0), hoặc fallback.
Definition njin_json.h:124
bool is(kind_t k) const
Có đúng loại k không.
Definition njin_json.h:82
json_value(f64 v)
Giá trị số.
Definition njin_json.h:62
json_value & push(json_value value)
Thêm phần tử vào cuối mảng.
f32 f32_or(f32 fallback) const
Số thực 32 bit, hoặc fallback.
Definition njin_json.h:122
static json_value make_array()
Một mảng rỗng.
Definition njin_json.h:75
static json_value make_object()
Một object rỗng.
Definition njin_json.h:69
usize size() const
Số phần tử (mảng) hoặc số thành viên (object), 0 với loại khác.
json_value & set(std::string_view key, json_value value)
Đặt thành viên key (thay nếu đã có, thêm vào cuối nếu chưa).
json_value(i64 v)
Giá trị số.
Definition njin_json.h:56
bool b
Giá trị khi kind == boolean.
Definition njin_json.h:44
const json_value & operator[](usize index) const
Phần tử thứ index của mảng, hoặc giá trị null nếu ngoài mảng.
json_value(std::string v)
Chuỗi.
Definition njin_json.h:66
const json_value & operator[](std::string_view key) const
Thành viên có tên key.
f64 num
Giá trị khi kind == number.
Definition njin_json.h:45
std::vector< json_value > items
Phần tử khi kind == array.
Definition njin_json.h:47
json_value(u32 v)
Giá trị số.
Definition njin_json.h:58
kind_t kind
Loại của giá trị này.
Definition njin_json.h:43