Module: JSON::Ext::Generator::GeneratorMethods::String

Defined in:
ext/json/ext/generator/generator.c

Defined Under Namespace

Modules: Extend

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(modul) ⇒ Object

Extends modul with the String::Extend module.



313
314
315
# File 'ext/json/ext/generator/generator.c', line 313

static VALUE mString_included_s(VALUE self, VALUE modul) {
    return rb_funcall(modul, i_extend, 1, mString_Extend);
}

Instance Method Details

#to_json(*) ⇒ Object

This string should be encoded with UTF-8 A call to this method returns a JSON string encoded with UTF16 big endian characters as u????.



324
325
326
327
328
329
330
331
# File 'ext/json/ext/generator/generator.c', line 324

static VALUE mString_to_json(int argc, VALUE *argv, VALUE self)
{
    VALUE result = rb_str_buf_new(RSTRING_LEN(self));
    rb_str_buf_cat2(result, "\"");
    JSON_convert_UTF8_to_JSON(result, self, strictConversion);
    rb_str_buf_cat2(result, "\"");
    return result;
}

#to_json_raw(*args) ⇒ Object

This method creates a JSON text from the result of a call to to_json_raw_object of this String.



356
357
358
359
360
# File 'ext/json/ext/generator/generator.c', line 356

static VALUE mString_to_json_raw(int argc, VALUE *argv, VALUE self) {
    VALUE obj = mString_to_json_raw_object(self);
    Check_Type(obj, T_HASH);
    return mHash_to_json(argc, argv, obj);
}

#to_json_raw_objectObject

This method creates a raw object hash, that can be nested into other data structures and will be unparsed as a raw string. This method should be used, if you want to convert raw strings to JSON instead of UTF-8 strings, e. g. binary data.



341
342
343
344
345
346
347
348
# File 'ext/json/ext/generator/generator.c', line 341

static VALUE mString_to_json_raw_object(VALUE self) {
    VALUE ary;
    VALUE result = rb_hash_new();
    rb_hash_aset(result, rb_funcall(mJSON, i_create_id, 0), rb_class_name(rb_obj_class(self)));
    ary = rb_funcall(self, i_unpack, 1, rb_str_new2("C*"));
    rb_hash_aset(result, rb_str_new2("raw"), ary);
    return result;
}