JSON Not converting long numbers appropriately

Javascript represents its numbers as double precision floats which limits the largest integer number that can be represented to +-9007199254740992. Here is the ECMA documentation.


This is a Javascript precision problem.

According to Mozilla Developer Network:

ECMA-262 only requires a precision of up to 21 significant digits. Other implementations may not support precisions higher than required by the standard.

Source: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Number/toPrecision

I pasted your array into Google Chrome's Javascript console and got back this: Javascript precision bug

So it looks like Javascript is rounding the values before they are being converted to XML. Since your conversion is being done via Javascript in the browser at http://www.utilities-online.info/xmltojson/, it makes sense why the number was changed.

(Note: I tested on Google Chrome version 26.0.1410.43 m using Windows 7 Professional)

Edit:

Is there any reason why you cannot pass these values to Javascript as strings?

Try this:

[
  {
    "orderNumber": "1",
    "customerId": "228930314431312345",
    "shoppingCartId": "22893031443137109",
    "firstName": "jjj"
  }
]

I was able to do this and save the values successfully. However, you will not be able to run a math calculation on them in Javascript without losing some precision, unless you are doing something like multiplying by 0, of course.

Javascript precision string workaround

This also converted to XML correctly using your reference http://www.utilities-online.info/xmltojson/.