<div dir="ltr"><div><span style="line-height:1.5">Hello,</span><br></div><div><br></div><div>I would like to raise an issue with data conversion when attempt to query data from server using event subscription. Here's a snippet of the code:</div><div><br></div><div><div><font face="monospace">// client js (dss add-on script)</font></div><div><font face="monospace">dss.ajaxSyncRequest('/json/event/subscribe', { subscriptionID: 12345, name: 'test' });</font></div><div><font face="monospace"><br></font></div><div><font face="monospace">dss.ajaxAssyncRequestWithoutAnswer(</font></div><div><font face="monospace">  '/json/event/get',</font></div><div><font face="monospace">  { subscriptionID: 12345, timeout: 60000 },</font></div><div><font face="monospace">  function(jsonString) { console.log(jsonString); }</font></div><div><font face="monospace">);</font></div><div><font face="monospace"><br></font></div><div><font face="monospace">// server js (dss event script)</font></div><div><font face="monospace">new Event('test', { hello: 'world', foo: { bar: 'baz' }}).raise();</font></div><div><font face="monospace"><br></font></div><div><span style="font-family:monospace;line-height:1.5">// result (jsonString value retrieve from client)</span><br></div><div><font face="monospace">{</font></div><div><font face="monospace">  "result": {</font></div><div><font face="monospace">    "events": [{</font></div><div><font face="monospace">      "name": "test",</font></div><div><font face="monospace">      "properties": {</font></div><div><font face="monospace">        "hello": "world",</font></div><div><font face="monospace">        "foo": "[object Object]"</font></div><div><font face="monospace">      },</font></div><div><font face="monospace">      "source": {</font></div><div><font face="monospace">        "set": ".zone(0).group(0)",</font></div><div><font face="monospace">        "groupID": 0,</font></div><div><font face="monospace">        "zoneID": 0,</font></div><div><font face="monospace">        "isApartment": true,</font></div><div><font face="monospace">        "isGroup": false,</font></div><div><font face="monospace">        "isDevice": false</font></div><div><font face="monospace">      }</font></div><div><font face="monospace">    }]</font></div><div><font face="monospace">  },</font></div><div><font face="monospace">  "ok": true</font></div><div><font face="monospace">}</font></div><div><br></div></div><div>As you can see, there is no problem getting variable 'hello', but unable to retrieve variable 'foo'.</div><div><br></div><div>Of course, there's a workaround by storing the value object as a string before passing over, and convert it back to object at the client (which is what I am currently doing). But that doesn't fix the underlying issue of not passing the value properly to the client.</div><div><br></div><div><div><font face="monospace">// client js</font></div><div><font face="monospace">dss.ajaxAssyncRequestWithoutAnswer(</font></div><div><font face="monospace">  '/json/event/get',</font></div><div><font face="monospace">  { subscriptionID: 12345, timeout: 60000 },</font></div><div><font face="monospace">  function(jsonString) {</font></div><div><font face="monospace">    var json = JSON.parse(jsonString);   // parse once</font></div><div><font face="monospace">    var fooString = json.result.events[0].properties.foo;</font></div><div><font face="monospace">    var foo = JSON.parse(fooString);     // parse twice</font></div><div><font face="monospace">    console.log(foo.bar);<br>  }</font></div><div><font face="monospace">);</font></div><div><font face="monospace"><br></font></div><div><font face="monospace">// server js</font></div><div><font face="monospace">var foo = { bar: 'baz' };</font></div><div><font face="monospace">new Event('test', { hello: 'world', foo: JSON.stringify(foo) }).raise();</font></div><br class="inbox-inbox-Apple-interchange-newline"></div><div><br></div><div><br></div><div>Regards,</div><div>Zi Yuan.</div></div>