Issue
So I have this json data that contains strings \r
(carriage return) and \n
(new line) - It's from Firebase. The problem is when I encode the data using json.encode
it add an escaping character. So \r
becomes \\r
.
I'm sending that data to an another server.
json.encode
works as expected if I do json.encode({'hello': 'world\r\n'})
but it adds \
when I used it on my other string.
Am I missing something?
Is there some type of encoding to prevent it from adding \
?
Solution
It seems that the data you received does not contain CR and LF characters but contains their escape sequences (\
followed by r
and \
followed by n
). Therefore when you encode that to JSON, it will be escaped again.
You could do:
data = data.replaceAll('\\r', '\r').replaceAll('\\n', '\n');
which probably would work most of the time, but it would have the corner case of undesirably replacing occurrences that were explicitly intended to be escaped. (That is, a string '\\n'
would be transformed to a sequence \
, LF.)
Since the data is already escaped, you probably could unescape it with json.decode
. Of course, decoding the data as JSON just to re-encode it to JSON seems a little silly, so if it's already properly encoded JSON, you ideally should pass it through it unchanged.
Answered By - jamesdlin
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.