class Object
Public Class Methods
JSON(*args)
click to toggle source
static VALUE
mimic_dump_load(int argc, VALUE *argv, VALUE self) {
if (1 > argc) {
rb_raise(rb_eArgError, "wrong number of arguments (0 for 1)");
} else if (T_STRING == rb_type(*argv)) {
return mimic_load(argc, argv, self);
} else {
return mimic_dump(argc, argv, self);
}
return Qnil;
}
Public Instance Methods
to_json(*args)
click to toggle source
static VALUE
mimic_object_to_json(int argc, VALUE *argv, VALUE self) {
char buf[4096];
struct _Out out;
VALUE rstr;
struct _Options copts = oj_default_options;
out.buf = buf;
out.end = buf + sizeof(buf) - 10;
out.allocated = 0;
out.omit_nil = copts.dump_opts.omit_nil;
// Have to turn off to_json to avoid the Active Support recursion problem.
copts.to_json = No;
// To be strict the mimic_object_to_json_options should be used but people
// seem to prefer the option of changing that.
//oj_dump_obj_to_json(self, &mimic_object_to_json_options, &out);
oj_dump_obj_to_json_using_params(self, &copts, &out, argc, argv);
if (0 == out.buf) {
rb_raise(rb_eNoMemError, "Not enough memory.");
}
rstr = rb_str_new2(out.buf);
rstr = oj_encode(rstr);
if (out.allocated) {
xfree(out.buf);
}
return rstr;
}