njin
Engine 2D gọn nhẹ để tự tay làm game theo ý mình. Vibe coding cũng ổn luôn
Loading...
Searching...
No Matches
njin::json_value Struct Tham chiếu

Một giá trị JSON: null, bool, số, chuỗi, mảng hoặc object. Tiếp...

#include <njin_json.h>

Public Types

enum  kind_t {
  null , boolean , number , string ,
  array , object
}
 Loại giá trị. Tiếp...

Các hàm thành viên Public

 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.

Các hàm Static Public

static json_value make_object ()
 Một object rỗng.
static json_value make_array ()
 Một mảng rỗng.

Các thuộc tính Public

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ả chi tiế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");
inventory.push("sword").push("potion");
save.set("inventory", std::move(inventory));
njin::json_save(njin::save_path(ctx, "save.json").c_str(), save);
if (njin::json_load(njin::save_path(ctx, "save.json").c_str(), loaded))
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ó.

Thông tin về Member Enumeration

◆ 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.

Thông tin về Constructor và Destructor

◆ json_value() [1/8]

njin::json_value::json_value ( bool v)
inline

Giá trị bool.

Các tham số
vGiá trị.

◆ json_value() [2/8]

njin::json_value::json_value ( i32 v)
inline

Giá trị số.

Các tham số
vGiá trị.

◆ json_value() [3/8]

njin::json_value::json_value ( i64 v)
inline

Giá trị số.

Các tham số
vGiá trị.

◆ json_value() [4/8]

njin::json_value::json_value ( u32 v)
inline

Giá trị số.

Các tham số
vGiá trị.

◆ json_value() [5/8]

njin::json_value::json_value ( f32 v)
inline

Giá trị số.

Các tham số
vGiá trị.

◆ json_value() [6/8]

njin::json_value::json_value ( f64 v)
inline

Giá trị số.

Các tham số
vGiá trị.

◆ 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ố
vGiá trị.

◆ json_value() [8/8]

njin::json_value::json_value ( std::string v)
inline

Chuỗi.

Các tham số
vGiá trị.

Thông tin về hàm thành viên

◆ 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ố
kLoại.
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ố
keyTên thành viên.
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ố
indexVị trí, từ 0.
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ố
keyTên thành viên.
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ố
keyTên.
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ố
keyTên thành viên.
valueGiá 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ố
valueGiá trị.
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ố
fallbackGiá 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ố
fallbackGiá 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ố
fallbackGiá 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ố
fallbackGiá 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ố
fallbackGiá trị dự phòng.
Giá trị trả về
Chuỗi.