Convert specific symbols to normal utf-8 from json - iphone

I get json string from server. Then I parser it using SBJSON library. But when I show parse results in my label I have symbols like that
!
(normally it's !).
So how can I convert my json string to normal string?

Use this: https://github.com/mwaterfall/MWFeedParser/blob/master/Classes/NSString+HTML.m (specifically, the stringByDecodingHTMLEntities method).

Related

Deserialize incorrect string array?

I am pulling a JSON formatted string from a database in some cases this string is just an array, but it badly formatted. I have no control over the data shape.
The string looks like this:
"[Hello, World]"
I want to parse this string to an array using JSON.parse, but that doesn't work when there are no quotes arround it.
So I need to somehow transform this string to this ["Hello", "World"]

MongoDB $bitsAllClear with BinData - how it works?

Does anyone knows how the mongodb $bitsAllClear works?
I ready the document from https://docs.mongodb.com/manual/reference/operator/query/bitsAllClear/ i am trying to understand how can i create a BinData from a bitmask
For example the documentation says:
(the binary representation of BinData(0, "ID==") is 00010100.
How can i transform the 00010100 to binary to insert in the document? Is there any online converted to try?
(the binary representation of BinData(0, "ID==") is 00010100.
This example looks incorrect to me. BinData takes a base64 encoded string as its second argument, and the base64 encoding of 00010100 is FA==. Other examples on that same page look correct, so I suspect it's a typo.
In node, you can do the conversion from a binary string to base64 like so:
const hexString = parseInt('00010100', 2).toString(16);
Buffer.from(hexString, 'hex').toString("base64") // FA==
Online tool to test out encodings here -> https://cryptii.com/pipes/binary-to-base64

Flask Restplus : Sending DateTime as a parameter [duplicate]

Let's say that I have following parser inside my get method:
from flask.ext.restful import reqparse
parser = reqparse.RequestParser()
parser.add_argument('when', type=datetime, help='Input wasn\'t valid!')
And then I want to test the said get method with curl...
curl --data "when=[WHAT SHOULD I WRITE HERE?]" localhost:5000/myGet
So the question is, how I should call the get method? I've tried numerous different formats, tried to read rfc228 standard, etc. but I can't figure out the right format.
Kinda late, but I've just been in the same problem, trying to parse a datetime with RequestParser, and sadly the docs are not so helpful for this scenario, so after seeing and testing RequestParser and Argument code, I think I found the problem:
When you use type=datetime in the add_argument method, under the hood it just calls datetime with the arg, like this: datetime(arg), so if your param is a string like this: 2016-07-12T23:13:3, the error will be an integer is required.
In my case, I wanted to parse a string with this format %Y-%m-%dT%H:%M:%S into a datetime object, so I thought to use something like type=datetime.strptime but as you know this method needs a format parameter, so I finally used this workaround:
parser.add_argument('date', type=lambda x: datetime.strptime(x,'%Y-%m-%dT%H:%M:%S'))
As you can see in this way you can use whatever format datetime you want. Also you can use partial functool instead of lambda to get the same result or a named function.
This workaround is in the docs.
Just an update on Flask-Restful (0.3.5): it is possible to use the own library date and datetime functionality parsing, if ISO 8601 or RFC 822 suffices:
from flask_restful import inputs
parser.add_argument('date', type=inputs.datetime_from_iso8601)
So the request would be,
curl --data "date=2012-01-01T23:30:00+02:00" localhost:5000/myGet
From the docs

How do you parse basic (short/compact) ISO:8601 string with Joda?

I have a time string, which looks like this: 20170822T194135+00. This is called basic ISO:8601 format, if I understood correctly.
When I try to parse it using ZonedDateTime, it throws exception, complaining that it can't parse it.
SO, how do I convert this string to a valid Joda datetime object?
Do I need to build manual "format" to parse it (this would be silly, considering it's a standard format)?
Desperately, I've actually tried to implement custom format:
const time = ZonedDateTime.parse(timeString, DateTimeFormatter.ofPattern(`yyyyMMdd'T'HHmmssZ`));
But, it throws error on column 15. Looks like it fails to parse the timezone. Is my implementation correct? How do I make it work?
I could do it using the pattern x as described in the docs (this pattern accepts offsets like +00).
Then I parsed directly to a ZonedDateTime:
const formatter = DateTimeFormatter.ofPattern("yyyyMMdd'T'HHmmssx");
const time = ZonedDateTime.parse("20170822T194135+00", formatter);
The resulting time variable has the value equivalent to 2017-08-22T19:41:35Z.
The built-in formatters (such as ISO_LOCAL_DATE_TIME) can't parse this format, so the only way seems to be creating a formatter.

iPhone image problem

How can I convert Base64 encode data into hex format.
I get following data in console.
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
And I would like to convert into:
<4c61742c 34343039 3131302e 35302c4c 6f6e2c39 38343237 352e3934 2c482c32 37392e30 302c4b6e 6f74732c 302e3032 2c4e616d 652c504c 41594552 2c496e64 65782c30 2c4d756c 7469706c 61796572 4e756d62 65722c30 00>
format.
Try this SO question about base64 libraries on iOS.