有些算不上bug,但也在此罗列方便查询。

序号 时间 描述 位置 处理
001 2020-12-23 <table>_type_identifier 中有\x00字符 flatbuffers_type_hash_from_string note
002 2020-12-25 字段值为默认值时,转json时将不生成json字段 src/runtime/json_printer.c note
003 2020-12-25 bool类型被强制默认值为false   需注意
004 2021-06-29 数值类型会自动把0设为默认值   数据不希望如此,可以手动将默认值设置为其它数值解决,比如最大值为默认值。
005 2021-06-29 同时交叉操作两个数组会造成错误 数组计数错误甚至崩溃  

002

可通过 flatcc_json_printer_set_force_default x=1 避免此问题

#define __define_print_scalar_field(TN, T)                                  \
void flatcc_json_printer_ ## TN ## _field(flatcc_json_printer_t *ctx,       \
        flatcc_json_printer_table_descriptor_t *td,                         \
        int id, const char *name, size_t len, T v)                          \
{                                                                           \
    T x;                                                                    \
    const void *p = get_field_ptr(td, id);                                  \
                                                                            \
    if (p) {                                                                \
        x = flatbuffers_ ## TN ## _read_from_pe(p);                         \
        if (x == v && ctx->skip_default) {                                  \
            return;                                                         \
        }                                                                   \
    } else {                                                                \
        if (!ctx->force_default) {                                          \
            return;                                                         \ <--被此处过滤
        }                                                                   \
        x = v;                                                              \
    }                                                                       \
    if (td->count++) {                                                      \
        print_char(',');                                                    \
    }                                                                       \
    print_name(ctx, name, len);                                             \
    ctx->p += print_ ## TN (x, ctx->p);                                     \
}