[ https://issues.apache.org/jira/browse/COUCHDB-1407?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13207066#comment-13207066 ] Kevin R. Coombes commented on COUCHDB-1407: ------------------------------------------- I've been staying out of the fray so far, but I want to (mostly) endorse Paul's summary and suggestion. The hear tof my arguemnt is two simple points: [1] JSON only defines Number. It does not define separate integer and floating point numbers. [2] CouchDB promises to respond to HTTP requests to PUT and GET data, and the return value is documented to be JSON. These two points imply that CouchDB only knows about the kinds of data structures that JSON defines and supports, and thus can/should make no promises about the representation of numbers beyond what you can get from JSON.. If an application depends on the distinction between integers and floating point values, then it is up to the person writing the application to make sure this distinction survives. As has already been pointed out, they can accomplish that goal by storing all numbers as (JSON) strings and using their application to decode/eval them. This fix requires no changes to the CouchDB code. I would not even change the encoder to deal with decimal points and precision. I would advocate just making sure that the documentation is clear on this point. In particular, it is probably necessary to document (as a breaking change that may require people to rewrite some of their applications) the fact that 1.2 may drop trailing zeros after the decimal point. You cannot really promise to support different types of numbers without radically changing the CouchDB code. You would then have to continually fight with JSON to get it to support something that is beyond its capabilities. Maintenance would become a nightmare. Let's try to avoid that road.... Kevin > JSON encoding of number changes > ------------------------------- > > Key: COUCHDB-1407 > URL: https://issues.apache.org/jira/browse/COUCHDB-1407 > Project: CouchDB > Issue Type: Bug > Components: HTTP Interface > Affects Versions: 1.2 > Environment: Ubuntu 12.04 (alpha) > Reporter: Adam Lofts > Attachments: 0001-Only-validate-numbers-on-JSON-decoding.patch > > > JSON encoding of Number has changed from 1.0.2 to 1.2. JSON only defines Number but this change causes issues in my app because python decodes the number as an int in 1.2. > Test case: > PORT=5985 > curl -X DELETE http://localhost:$PORT/test-floats/ > curl -X PUT http://localhost:$PORT/test-floats/ > curl -X PUT http://localhost:$PORT/test-floats/doc1 -H "Content-Type: application/json" -d "{ \"a\": 1.0 }" > curl http://localhost:$PORT/test-floats/doc1 > Run against 1.0.2: > {"ok":true} > {"ok":true} > {"ok":true,"id":"doc1","rev":"1-78e61304147429d3d500aee7806fd26d"} > {"_id":"doc1","_rev":"1-78e61304147429d3d500aee7806fd26d","a":1.0} > Run against 1.2: > {"ok":true} > {"ok":true} > {"ok":true,"id":"doc1","rev":"1-78e61304147429d3d500aee7806fd26d"} > {"_id":"doc1","_rev":"1-78e61304147429d3d500aee7806fd26d","a":1} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira