/* * call-seq: to_json(*) * * 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????. */ 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, "\""); #ifdef HAVE_RUBY_ENCODING_H if (rb_funcall(self, i_encoding, 0) == mEncoding_UTF_8) { JSON_convert_UTF8_to_JSON(result, self, strictConversion); } else { VALUE string = rb_funcall(self, i_encode, 1, mEncoding_UTF_8); JSON_convert_UTF8_to_JSON(result, string, strictConversion); } #else JSON_convert_UTF8_to_JSON(result, self, strictConversion); #endif rb_str_buf_cat2(result, "\""); FORCE_UTF8(result); return result; }