Một giá trị JSON: null, bool, số, chuỗi, mảng hoặc object.
Tiếp...
#include <njin_json.h>
|
| | json_value (bool v) |
| | Giá trị bool.
|
| | json_value (i32 v) |
| | Giá trị số.
|
| | json_value (i64 v) |
| | Giá trị số.
|
| | json_value (u32 v) |
| | Giá trị số.
|
| | json_value (f32 v) |
| | Giá trị số.
|
| | json_value (f64 v) |
| | Giá trị số.
|
| | json_value (const char *v) |
| | Chuỗi. null trở thành giá trị null.
|
| | json_value (std::string v) |
| | Chuỗi.
|
| bool | is (kind_t k) const |
| | Có đúng loại k không.
|
| const json_value & | operator[] (std::string_view key) const |
| | Thành viên có tên key.
|
| 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 * | find (std::string_view key) |
| | Thành viên có tên key để sửa, hoặc null nếu không có.
|
| bool | has (std::string_view key) const |
| | Có thành viên tên key không.
|
| 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 & | push (json_value value) |
| | Thêm phần tử vào cuối mảng.
|
| f64 | number_or (f64 fallback) const |
| | Số, hoặc fallback nếu không phải số.
|
| f32 | f32_or (f32 fallback) const |
| | Số thực 32 bit, hoặc fallback.
|
| i32 | int_or (i32 fallback) const |
| | Số nguyên (làm tròn về 0), hoặc fallback.
|
| bool | bool_or (bool fallback) const |
| | Bool, hoặc fallback nếu không phải bool.
|
| const char * | string_or (const char *fallback) const |
| | Chuỗi, hoặc fallback nếu không phải chuỗi.
|
|
|
kind_t | kind = null |
| | Loại của giá trị này.
|
|
bool | b = false |
| | Giá trị khi kind == boolean.
|
|
f64 | num = 0.0 |
| | Giá trị khi kind == number.
|
|
std::string | str |
| | Giá trị khi kind == string.
|
|
std::vector< json_value > | items |
| | Phần tử khi kind == array.
|
|
std::vector< std::pair< std::string, json_value > > | members |
| | Thành viên khi kind == object, theo thứ tự.
|
Một giá trị JSON: null, bool, số, chuỗi, mảng hoặc object.
Dùng cho save game, file cấu hình, và thuộc tính đọc từ Tiled, LDtk.
Đọc thì an toàn với dữ liệu thiếu: doc["player"]["hp"] trên một khóa không có trả về giá trị null chứ không lỗi, và number_or() trả về giá trị dự phòng. Ghi thì dựng bằng set() và push():
save.
set(
"level", 3).
set(
"hp", 7.5).
set(
"name",
"An");
save.
set(
"inventory", std::move(inventory));
level = loaded[
"level"].
int_or(1);
std::string save_path(const context &ctx, const char *file_name)
Đường dẫn đầy đủ của một file lưu game, trong thư mục riêng của người dùng.
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_load(const char *path, json_value &out)
Đọc và phân tích một file JSON.
Một giá trị JSON: null, bool, số, chuỗi, mảng hoặc object.
Definition njin_json.h:33
i32 int_or(i32 fallback) const
Số nguyên (làm tròn về 0), hoặc fallback.
Definition njin_json.h:124
json_value & push(json_value value)
Thêm phần tử vào cuối mảng.
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
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).
Thành viên của object giữ đúng thứ tự trong file (và thứ tự set()), nên ghi lại một file vừa đọc không làm xáo trộn nó.
◆ kind_t
Loại giá trị.
| Enumerator |
|---|
| null | Không có giá trị. Cũng là kết quả khi đọc khóa không tồn tại.
|
| boolean | true hoặc false, trong b.
|
| number | Số, trong num.
|
| string | Chuỗi UTF-8, trong str.
|
| array | Mảng, trong items.
|
| object | Object, trong members.
|
◆ json_value() [1/8]
| njin::json_value::json_value |
( |
bool | v | ) |
|
|
inline |
Giá trị bool.
- Các tham số
-
◆ json_value() [2/8]
| njin::json_value::json_value |
( |
i32 | v | ) |
|
|
inline |
◆ json_value() [3/8]
| njin::json_value::json_value |
( |
i64 | v | ) |
|
|
inline |
◆ json_value() [4/8]
| njin::json_value::json_value |
( |
u32 | v | ) |
|
|
inline |
◆ json_value() [5/8]
| njin::json_value::json_value |
( |
f32 | v | ) |
|
|
inline |
◆ json_value() [6/8]
| njin::json_value::json_value |
( |
f64 | v | ) |
|
|
inline |
◆ json_value() [7/8]
| njin::json_value::json_value |
( |
const char * | v | ) |
|
|
inline |
Chuỗi. null trở thành giá trị null.
- Các tham số
-
◆ json_value() [8/8]
| njin::json_value::json_value |
( |
std::string | v | ) |
|
|
inline |
◆ make_object()
| json_value njin::json_value::make_object |
( |
| ) |
|
|
inlinestatic |
Một object rỗng.
- Giá trị trả về
- Object không có thành viên.
◆ make_array()
| json_value njin::json_value::make_array |
( |
| ) |
|
|
inlinestatic |
Một mảng rỗng.
- Giá trị trả về
- Mảng không có phần tử.
◆ is()
| bool njin::json_value::is |
( |
kind_t | k | ) |
const |
|
inline |
Có đúng loại k không.
- Các tham số
-
- Giá trị trả về
- true nếu đúng.
◆ operator[]() [1/2]
| const json_value & njin::json_value::operator[] |
( |
std::string_view | key | ) |
const |
Thành viên có tên key.
Đọc khóa không có, hoặc đọc trên giá trị không phải object, trả về một giá trị null dùng chung (không bao giờ lỗi).
- Các tham số
-
- Giá trị trả về
- Thành viên, hoặc giá trị null.
◆ operator[]() [2/2]
| const json_value & njin::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.
- Các tham số
-
- Giá trị trả về
- Phần tử, hoặc giá trị null.
◆ find()
| json_value * njin::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ó.
- Các tham số
-
- Giá trị trả về
- Con trỏ tới thành viên, hoặc null.
◆ has()
| bool njin::json_value::has |
( |
std::string_view | key | ) |
const |
Có thành viên tên key không.
- Các tham số
-
- Giá trị trả về
- true nếu có.
◆ size()
| usize njin::json_value::size |
( |
| ) |
const |
Số phần tử (mảng) hoặc số thành viên (object), 0 với loại khác.
- Giá trị trả về
- Kích thước.
◆ set()
| json_value & njin::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).
Giá trị null (chưa phải object) tự trở thành object.
- Các tham số
-
| key | Tên thành viên. |
| value | Giá trị. |
- Giá trị trả về
- Chính object này, để gọi nối tiếp.
◆ push()
| json_value & njin::json_value::push |
( |
json_value | value | ) |
|
Thêm phần tử vào cuối mảng.
Giá trị null tự trở thành mảng.
- Các tham số
-
- Giá trị trả về
- Chính mảng này, để gọi nối tiếp.
◆ number_or()
| f64 njin::json_value::number_or |
( |
f64 | fallback | ) |
const |
|
inline |
Số, hoặc fallback nếu không phải số.
- Các tham số
-
| fallback | Giá trị dự phòng. |
- Giá trị trả về
- Số.
◆ f32_or()
| f32 njin::json_value::f32_or |
( |
f32 | fallback | ) |
const |
|
inline |
Số thực 32 bit, hoặc fallback.
- Các tham số
-
| fallback | Giá trị dự phòng. |
- Giá trị trả về
- Số.
◆ int_or()
| i32 njin::json_value::int_or |
( |
i32 | fallback | ) |
const |
|
inline |
Số nguyên (làm tròn về 0), hoặc fallback.
- Các tham số
-
| fallback | Giá trị dự phòng. |
- Giá trị trả về
- Số.
◆ bool_or()
| bool njin::json_value::bool_or |
( |
bool | fallback | ) |
const |
|
inline |
Bool, hoặc fallback nếu không phải bool.
- Các tham số
-
| fallback | Giá trị dự phòng. |
- Giá trị trả về
- Bool.
◆ string_or()
| const char * njin::json_value::string_or |
( |
const char * | fallback | ) |
const |
|
inline |
Chuỗi, hoặc fallback nếu không phải chuỗi.
Con trỏ sống cùng giá trị này.
- Các tham số
-
| fallback | Giá trị dự phòng. |
- Giá trị trả về
- Chuỗi.