Skip to content

Serialising Infinity and NaN in JSON #109

Open

Description

Fjage seems to serialize Double.NEGATIVE_INFINITY as -Infinity, which isn't a valid JSON value. This causes fjage.js to throw errors and not parse any message if some value is set to Infinity.

Relevant issue in gson : google/gson#81

fjage.js:342 JSON Parsing error: SyntaxError: Unexpected token I in JSON at position 2386
JSON : {"action":"send","message":{"clazz":"org.arl.unet.ParameterRsp","data":{"index":-1,"values":{"org.arl.yoda.ModemParam.adcrate":48000.0,"org.arl.yoda.ModemParam.pulsedelay":0,"org.arl.unet.bb.BasebandParam.maxSignalLength":2147483647,"org.arl.yoda.ModemParam.model":"Unet audio","org.arl.yoda.ModemParam.pbscnt":0,"org.arl.unet.phy.PhysicalParam.refPowerLevel":0.0,"org.arl.yoda.ModemParam.npulses":1,"org.arl.yoda.ModemParam.serial":"unetaudio","org.arl.unet.scheduler.SchedulerParam.wakeOnEthernet":false,"org.arl.yoda.ModemParam.voltage":0.0,"org.arl.yoda.ModemParam.preamp":false,"org.arl.unet.scheduler.SchedulerParam.rtc":{"clazz":"java.util.Date","data":1578190205271},"org.arl.unet.phy.PhysicalParam.time":1714311772,"org.arl.unet.bb.BasebandParam.basebandRate":12000.0,"org.arl.yoda.ModemParam.downconvRatio":4.0,"org.arl.unet.phy.PhysicalParam.busy":false,"org.arl.yoda.ModemParam.fan":false,"org.arl.yoda.ModemParam.gain":0.0,"org.arl.unet.phy.PhysicalParam.minPowerLevel":-138.0,"org.arl.yoda.ModemParam.isc":true,"org.arl.yoda.ModemParam.fanctl":45.0,"org.arl.unet.bb.BasebandParam.maxPreambleID":4,"org.arl.unet.phy.PhysicalParam.rxSensitivity":0.0,"org.arl.yoda.ModemParam.wakeuplen":8000,"org.arl.unet.scheduler.SchedulerParam.wakeOnRS232":false,"description":"Provides software-defined physical layer communication services (including error detection \u0026 correction).","org.arl.unet.phy.PhysicalParam.propagationSpeed":1500.0,"org.arl.yoda.ModemParam.upconvRatio":8.0,"org.arl.yoda.ModemParam.fullduplex":false,"title":"Physical layer","org.arl.unet.phy.PhysicalParam.rxEnable":true,"org.arl.yoda.ModemParam.loopback":false,"org.arl.yoda.ModemParam.vendor":"UnetStack","org.arl.yoda.ModemParam.clockCalib":1.0,"org.arl.unet.bb.BasebandParam.carrierFrequency":12000.0,"org.arl.unet.bb.BasebandParam.signalPowerLevel":-42.0,"org.arl.yoda.ModemParam.pbsblk":65536,"org.arl.yoda.ModemParam.bbscnt":0,"org.arl.yoda.ModemParam.mute":true,"org.arl.yoda.ModemParam.bbsblk":6000,"org.arl.yoda.ModemParam.hpc":false,"org.arl.yoda.ModemParam.poweramp":false,"org.arl.unet.phy.PhysicalParam.timestampedTxDelay":1.0,"org.arl.unet.scheduler.SchedulerParam.wakeOnAcoustic":false,"org.arl.unet.phy.PhysicalParam.maxPowerLevel":0.0,"org.arl.yoda.ModemParam.standby":15,"org.arl.yoda.ModemParam.dacrate":96000.0,"org.arl.yoda.ModemParam.bpfilter":true,"org.arl.yoda.ModemParam.noise":-Infinity,"org.arl.yoda.ModemParam.inhibit":120,"org.arl.yoda.ModemParam.wakeupdelay":400},"param":"org.arl.unet.DatagramParam.MTU","value":128,"msgID":"45e05476-5cfb-4887-8f75-b416f9717df8","perf":"INFORM","recipient":"WebGW-2dc4e96326ed68d0","sender":"phy","inReplyTo":"b434e55f3dcba759bad5a9f71a30118e"}},"relay":false}



fjage.js:342 JSON Parsing error: SyntaxError: Unexpected token I in JSON at position 695
JSON : {"action":"send","message":{"clazz":"org.arl.unet.ParameterRsp","data":{"index":-1,"values":{"org.arl.yoda.ModemParam.preamp":false,"org.arl.yoda.ModemParam.bpfilter":true,"org.arl.yoda.ModemParam.adcrate":48000.0,"org.arl.yoda.ModemParam.mute":true,"org.arl.unet.phy.PhysicalParam.timestampedTxDelay":1.0,"org.arl.unet.bb.BasebandParam.signalPowerLevel":-42.0,"org.arl.yoda.ModemParam.bbscnt":0,"org.arl.unet.phy.PhysicalParam.propagationSpeed":1500.0,"org.arl.yoda.ModemParam.pulsedelay":0,"org.arl.yoda.ModemParam.fullduplex":false,"org.arl.unet.phy.PhysicalParam.minPowerLevel":-138.0,"org.arl.yoda.ModemParam.isc":true,"org.arl.yoda.ModemParam.bbsblk":6000,"org.arl.yoda.ModemParam.noise":-Infinity,"org.arl.yoda.ModemParam.gain":0.0,"org.arl.yoda.ModemParam.npulses":1,"org.arl.unet.phy.PhysicalParam.busy":false,"org.arl.unet.phy.PhysicalParam.refPowerLevel":0.0,"org.arl.unet.bb.BasebandParam.maxSignalLength":2147483647,"org.arl.yoda.ModemParam.inhibit":120,"org.arl.unet.scheduler.SchedulerParam.wakeOnAcoustic":false,"org.arl.yoda.ModemParam.voltage":0.0,"org.arl.yoda.ModemParam.wakeupdelay":400,"org.arl.unet.phy.PhysicalParam.rxEnable":true,"org.arl.yoda.ModemParam.loopback":false,"org.arl.yoda.ModemParam.model":"Unet audio","org.arl.yoda.ModemParam.poweramp":false,"org.arl.unet.phy.PhysicalParam.maxPowerLevel":0.0,"org.arl.yoda.ModemParam.fanctl":45.0,"org.arl.unet.bb.BasebandParam.carrierFrequency":12000.0,"org.arl.yoda.ModemParam.standby":15,"org.arl.unet.scheduler.SchedulerParam.wakeOnEthernet":false,"description":"Provides software-defined physical layer communication services (including error detection \u0026 correction).","title":"Physical layer","org.arl.yoda.ModemParam.dacrate":96000.0,"org.arl.yoda.ModemParam.fan":false,"org.arl.yoda.ModemParam.wakeuplen":8000,"org.arl.yoda.ModemParam.clockCalib":1.0,"org.arl.unet.bb.BasebandParam.maxPreambleID":4,"org.arl.yoda.ModemParam.vendor":"UnetStack","org.arl.yoda.ModemParam.hpc":false,"org.arl.yoda.ModemParam.serial":"unetaudio","org.arl.yoda.ModemParam.pbsblk":65536,"org.arl.unet.phy.PhysicalParam.rxSensitivity":0.0,"org.arl.yoda.ModemParam.pbscnt":0,"org.arl.unet.phy.PhysicalParam.time":92445105,"org.arl.unet.scheduler.SchedulerParam.wakeOnRS232":false,"org.arl.unet.scheduler.SchedulerParam.rtc":{"clazz":"java.util.Date","data":1578190333851},"org.arl.unet.bb.BasebandParam.basebandRate":12000.0,"org.arl.yoda.ModemParam.downconvRatio":4.0,"org.arl.yoda.ModemParam.upconvRatio":8.0},"param":"org.arl.unet.DatagramParam.MTU","value":128,"msgID":"98e289b4-c2af-4e94-b267-1c70318e6774","perf":"INFORM","recipient":"WebGW-7112906cf09e6e33","sender":"phy","inReplyTo":"a8ea19389692a76d495d731db8e4a1b5"}},"relay":false}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions