Comments (9)
Issue originally posted in msgpack/msgpack#188
from msgpack-ruby.
I disagree. I don't think it would be a good idea to make #to_msgpack
use #as_json
. That method is not at all standardized and would mean that MessagePack started acting differently when you load another gem that happens to add #to_json
to things.
For example: Cql::TimeUuid
doesn't have a #as_json
method (I know, I'm the author of cql-rb, where that class comes from, I assume that it's Cequel that adds it). If you decided to use cql-rb directly and not through Cequel, or just copied the code to a project where you don't use Cequel your code would suddenly stop working.
from msgpack-ruby.
An alternative, that wouldn't have the same problem, would be to check for a #to_h
method and fall back on that it if exists. There would still be no guarantee that the value returned from the method would be MessagePack'able.
At the same time, this is what the MessagePack extensions should be used for. The Ruby and JRuby implementations don't support them very well at the moment, unfortunately.
from msgpack-ruby.
I didn't realize as_json
was a rails only method! to_h
seems to be a good alternative then.
What about the bignum too big to convert
error? (Should I open a new issue?)
irb(main):002:0> {"n"=>81669062298108866050539035482603516879}.to_msgpack
RangeError: bignum too big to convert into `unsigned long long'
from (irb):2:in `to_msgpack'
from (irb):2
from /Users/mickael/.rvm/rubies/ruby-2.1.5/bin/irb:11:in `<main>'
from msgpack-ruby.
What about the bignum too big to convert error? (Should I open a new issue?)
It's easier to track issues if they are reported separately, so yes please. We can leave this issue open as a feature request for the #to_msgpack
/#to_h
thing.
from msgpack-ruby.
Created it in #57
from msgpack-ruby.
If you want msgpack to support big integer, comment is welcomed in msgpack repo's issue: msgpack/msgpack#206
from msgpack-ruby.
Isn't this what custom serialisation (extension types) is for?
from msgpack-ruby.
Right. Use ext types for this purpose. I missed to close this.
from msgpack-ruby.
Related Issues (20)
- Does msgpack_each support nested calls in design principle? HOT 3
- Unpack "end of buffer reached" error on Windows HOT 13
- Extra bytes when loading string HOT 5
- Seg Fault in #load HOT 3
- msgpack.jar seems to be missing in v1.5.5 HOT 7
- Correct way to pack and unpack `Struct` instances. HOT 4
- Packer can overwrite earlier parts of its buffer in version 1.6.0 HOT 10
- jruby: `MessagePack::Unpacker#buffer` is missing
- [BUG] Failed to free an rmem pointer, memory leak? HOT 8
- Compile fails on older toolsets HOT 5
- undefined method `to_msgpack' for BigDecimal (NoMethodError) HOT 4
- Attempt to GC mark already marked object HOT 22
- Pass empty string into MessagePack::Unpacker.feed will stop further feeding valid string in version >= 1.7.0 HOT 1
- Amazon Linux 2 w Ruby 2.6.10 - msgpack requires Ruby version >= 2.5. HOT 1
- Write msgpack to msgpack HOT 2
- Pack as uint16 HOT 1
- Feature request: Time packer HOT 1
- Fix for platforms without compaction support not complete
- 10 extra bytes after the deserialized object HOT 1
- Is Ruby 3.3.0 supported? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from msgpack-ruby.