mathiasbynens / jsesc

Given some data, jsesc returns the shortest possible stringified & ASCII-safe representation of that data.
https://mths.be/jsesc
MIT License
716 stars 48 forks source link

issue in parsing string to json #19

Closed ahmedshendy closed 9 years ago

ahmedshendy commented 9 years ago

My code is:

var jsesc = require('jsesc');

var jsonText = '{"account_id":111,"account_name":"test","interface_id":2,"request_id":0,"message_id":"6a23bbbe-1cfd-4ba5-8dfd-b3b7abb86576","source_addr":"Test TNT","destination_addr":"96892000730","coding":2,"concatenation":1,"message_text":"S3rvT3L20130NVBQakoiYHello, I hope you have a nice day. @\u0002#%!&\\/)(=?*+,","UDH":"","flash":0,"validaty_period":1440,"delivery_time":1440,"smpp_port":2012,"registered_delivery":1,"dlr_ip":"10.158.36.200","dlr_port":2051,"submit_sm_start_timestamp":"2015-01-06T05:40:05.042"}'

var jsonOpject = JSON.parse(jsesc(jsonText, {'json': true}));

console.log(jsonOpject.message_id);

The result is:

undefined
mathiasbynens commented 9 years ago

It seems you’re misunderstanding what jsesc does. What are you trying to do, exactly? Parsing a JSON-formatted string back into an object can be done using JSON.parse only.

ahmedshendy commented 9 years ago

the issue is in this character \u0002, when using JSON.parse through exception

ahmedshendy commented 9 years ago

I need to escape character \u0002

mathiasbynens commented 9 years ago

I need to escape character \u0002

jsesc('\u0002');
ahmedshendy commented 9 years ago

ok, this character included in this string '{"account_id":111,"account_name":"test","interface_id":2,"request_id":0,"message_id":"6a23bbbe-1cfd-4ba5-8dfd-b3b7abb86576","source_addr":"Test TNT","destination_addr":"96892000730","coding":2,"concatenation":1,"message_text":"S3rvT3L20130NVBQakoiYHello, I hope you have a nice day. @\u0002#%!&\/)(=?*+,","UDH":"","flash":0,"validaty_period":1440,"delivery_time":1440,"smpp_port":2012,"registered_delivery":1,"dlr_ip":"10.158.36.200","dlr_port":2051,"submit_sm_start_timestamp":"2015-01-06T05:40:05.042"}'

that I want parse it to JSON

mathiasbynens commented 9 years ago

Use JSON.parse.

ahmedshendy commented 9 years ago

when I use JSON.parse with this string, this error generated SyntaxError: Unexpected token ^E at Object.parse (native)

mathiasbynens commented 9 years ago

How is jsonText generated? Generate it using jsesc so it is properly escaped (JSON-serialized data cannot contain literal control characters), then JSON.parse works fine.