-1

This is my zipped JSON value from API response:

"response": {
"Status": 1,
"assetdescription": null,
"lastgatewayreport": "H4sIAAAAAAAAAM2V227jNhCGX4XQNaPwoAOlu7TuJi26ycJJG6BFYTAi4xCQRIOk3WSLfZg+S1+sI9mOLUeLJJvdor6x+c8MNfw1H/37X5H0XgejopLytMDrZSsbHZXRT6ZpHh4iHM2dXS424kTfymUdtmpXWXCBIyUD7NOnEHFM2TEjNEM0K5OiZAWk38gQojJJcaTvg9etty4qjyjpPjHB0d2yMcqEh4EYdLPQToalg41ZGgu+1rxeadcnQ1Jt5ndhULZw2vu+pl82NhjbQmfnJ9CI897A71NrFaxq2XVF4kTkoihy0SvKuC67C3d1eRonHMJZzntlHb6GsF9orTZPmS+8D9Cqh1j3HFib9tbC6ohCcyUrCSlpkZRMlJxpXjJ+y0rO16mNVdAu7K8M7NJW297vtFSmnXe2xgRS4eBt/74i0R8XpLbZiZ3Txm77YLCBVKpzA2I0z3J0bVqFzkxdo6nC6HtrwV9/s3RzjD6cICoIzzD65bI7gKzNCtq4lbXXnS0+rEBSY47tQnvWPapPPdwL7cx8VJ+dpUrX20ZY3tu0UbonDRRZVRsje482Q3xuXSNrPL28mn24mPbf311Mpvs97GxbD438cz03RxntR2SmDk2wbacdfeagYxV7LhyWfsIDNEU6RPPcNDe1np2+Hk5Kj8HTtaFFSURJs0c4c/LlcFI4WX4IZ/I14OQszknOBCdsDE5K85hmKUmyrPjGdCbfkk7OU3SNzqS7sQ5NHEaXskUTo+cWMD1BBaOEvoTMA7ueJ/PAwBejOT5J/ymar/FslOChWRsMP2fIWMkhwvu1Q4ZTIoYMX2kfZlN9Z+ZfQDHcidmj9ykp2Y5i/gaKOY3JE4q/yl8s4zFLRJJzOgoxyeIkTcFV9n9iWEDH4hUM/2oqSNPodKmd0w6m8DfbSjSxTiqJkWCUEvRefpSh/ufvFsbVtDFG7/W9qewzWA/9ewHVA0dfDvXoYL0V6h8v6Ozi3Tv8czdGaKKDrgKeaq/dSqtZgq9kN4PopApmBb3gs/UrQT/cV/D28avuhDe+g9FrYmD+lvRxg0cKntwRu8pPf/wLveleYoMLAAA=",
"Msg": "Success"
}

This should be like this

"response": {
"Status": 1,
"assetdescription": null,
"lastgatewayreport": [
  {
    "assetid": 1359,
    "assetname": "Jimmyy",
    "assetgroupname": null,
    "groupname": "Default",
    "groupid": 938,
    "datetime": "08/12/2016 16:49:29",
    "batt": 45,
    "extsensor": -100000,
    "extsensortype": null,
    "humidity": -100000,
    "temperatur .......

That unzip content have NSArray of NSDictionary

I already tried convert to NSData then JSONObjectWithData but not working.

How can I unzip that json key in objective c. I am using AFNetworking. Is that possible to unzip those content.

vaibhav
  • 4,038
  • 1
  • 21
  • 51
Mathi Arasan
  • 869
  • 2
  • 10
  • 32
  • Looks like `lastgatewayreport` is a base64 gz zipped data. I'm not good at Objective-C, but looks like you need to find a library to decompress "base64 gz". http://www.txtwizard.net/compression – Ali Yousuf Jan 19 '17 at 07:55
  • So actually you need an array of objects as response and you are getting above response from api then you need to contact to server team as i see here ?. – vaibhav Jan 19 '17 at 08:17
  • @vaibhav I have another option to get clear response (without zip content), but I need to know what kind of zip that's it. I think below answer Jon Rose shared correct link. – Mathi Arasan Jan 19 '17 at 08:49

1 Answers1

0

The content is gziped (enter it in here: http://www.txtwizard.net/compression). After you get the data you have to ungzip it and then run JSONObjectWithData. I have had good experience using https://github.com/nicklockwood/GZIP to gzip and ungzip data.

Jon Rose
  • 8,373
  • 1
  • 30
  • 36
  • Thanks for your share Jon Rose. I am checked with your first txtwizard with my `NSString` with decompress and I got output there. In code I didn't get that. ```- (BOOL)isGzippedData;``` this one return `NO`. ```NSString *zipString = responseDict[@"lastgatewayreport"]; NSData *jsonData = [zipString dataUsingEncoding:NSUTF8StringEncoding]; BOOL isZipped = [jsonData isGzippedData];``` – Mathi Arasan Jan 19 '17 at 09:18
  • 1
    Got it from [stackoverflow answer](http://stackoverflow.com/questions/26991160/convert-base64-gzipped-string-objective-c-or-swift). ```NSData* compressedData = [[NSData alloc] initWithBase64EncodedString:zipString options:0]; NSData *jsonData = [compressedData gunzippedData]; NSArray *json = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments error:&error];``` – Mathi Arasan Jan 19 '17 at 09:32