TouchCode / TouchJSON

A humane JSON Objective-C un-framework. (TouchJSON has been deprecated - see README)
http://touchcode.com/
Other
800 stars 169 forks source link

Fail to parse valid JSON on iPod Touch 1G running iOS 3.1.3 #9

Closed mgrebenets closed 13 years ago

mgrebenets commented 13 years ago

Just updated from old TouchJSON version (don't know exactly which one) to latest source. I had to do an update, because TouchJSON kept crashing while parsing JSON data with following message * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '* -[NSCFString appendString:]: nil argument' I found that this is Issue 82 and recommendation is to use latest code, so I switched to latest.

The issue now is that valid JSON is not parsed. The error is (NSError after call to deserialize or deserializeAsDictionary): Error Domain=kJSONScannerErrorDomain Code=-12 UserInfo=0x1c44d0 "Could not scan data. Data wasn't encoded properly?" Before I paste lengthy JSON data here, I have to mention that this error happens only on device (iPod Touch 1G) running iOS 3.1.3 iOS 4.2 Simulator and iPad running iOS 4.3.2 both have no issues with parsing similar JSONs sent by same server (the structure of JSON is same, but some values are different, like names and ids).

The JSON data in question is: { "result": { "games": [ { "gameId": 68052, "creationDate": "Tue May 10 15:26:48 UTC 2011", "name": "i4niaccc", "state": 1, "lastCmdPlayerType": 1, "lastMoveUnitId": -1, "lastMoveToRow": -1, "lastMoveToCol": -1, "lastCmd": 8, "lastCoinToss": -1, "serverPlayer": { "left": false, "id": "040e5d67ec2042700e73f5b4baf1e6cc2cf85c0f", "name": "i4niaccc", "rank": "0", "osType": "iOS_2.1", "tag": "8dfd0400dba5beb5fe37b8e05b2209f2c87b22ab598c954d2168a46d1777d521", "setupDone": false, "army": null, "prevArmy": null, "result": -100, "revealedUnits": null }, "clientPlayer": { "left": false, "id": "040e5d67ec2042700e73f5b4baf1e6cc2cf85c0f", "name": "i4niaccc", "rank": "0", "osType": "iOS_2.1", "tag": "8dfd0400dba5beb5fe37b8e05b2209f2c87b22ab598c954d2168a46d1777d521", "setupDone": false, "army": null, "prevArmy": null, "result": -100, "revealedUnits": null }, "rules": { "defenderMovedOnWin": false, "marshallProtected": true, "bombRemoved": false, "rangeAttack": true, "attackerWinsOnTie": false, "chasing": false, "jumping": false, "revealUnits": false, "markMovedUnits": false } }, { "gameId": 66049, "creationDate": "Tue May 10 15:32:38 UTC 2011", "name": "i4niaccc", "state": 0, "lastCmdPlayerType": 1, "lastMoveUnitId": -1, "lastMoveToRow": -1, "lastMoveToCol": -1, "lastCmd": 8, "lastCoinToss": -1, "serverPlayer": { "left": false, "id": "040e5d67ec2042700e73f5b4baf1e6cc2cf85c0f", "name": "i4niaccc", "rank": "0", "osType": "iOS_2.1", "tag": "8dfd0400dba5beb5fe37b8e05b2209f2c87b22ab598c954d2168a46d1777d521", "setupDone": false, "army": null, "prevArmy": null, "result": -100, "revealedUnits": null }, "clientPlayer": { "left": false, "id": null, "name": null, "rank": null, "osType": null, "tag": null, "setupDone": false, "army": null, "prevArmy": null, "result": 0, "revealedUnits": null }, "rules": { "defenderMovedOnWin": false, "marshallProtected": true, "bombRemoved": false, "rangeAttack": false, "attackerWinsOnTie": false, "chasing": false, "jumping": false, "revealUnits": false, "markMovedUnits": false } }, { "gameId": 66050, "creationDate": "Tue May 10 15:43:09 UTC 2011", "name": "i4niaccc", "state": 0, "lastCmdPlayerType": 1, "lastMoveUnitId": -1, "lastMoveToRow": -1, "lastMoveToCol": -1, "lastCmd": 8, "lastCoinToss": -1, "serverPlayer": { "left": false, "id": "040e5d67ec2042700e73f5b4baf1e6cc2cf85c0f", "name": "i4niaccc", "rank": "0", "osType": "iOS_2.1", "tag": "8dfd0400dba5beb5fe37b8e05b2209f2c87b22ab598c954d2168a46d1777d521", "setupDone": false, "army": null, "prevArmy": null, "result": -100, "revealedUnits": null }, "clientPlayer": { "left": false, "id": null, "name": null, "rank": null, "osType": null, "tag": null, "setupDone": false, "army": null, "prevArmy": null, "result": 0, "revealedUnits": null }, "rules": { "defenderMovedOnWin": false, "marshallProtected": false, "bombRemoved": true, "rangeAttack": false, "attackerWinsOnTie": false, "chasing": false, "jumping": false, "revealUnits": false, "markMovedUnits": false } }, { "gameId": 69059, "creationDate": "Tue May 10 15:50:54 UTC 2011", "name": "i4niaccc", "state": 0, "lastCmdPlayerType": 1, "lastMoveUnitId": -1, "lastMoveToRow": -1, "lastMoveToCol": -1, "lastCmd": 8, "lastCoinToss": -1, "serverPlayer": { "left": false, "id": "040e5d67ec2042700e73f5b4baf1e6cc2cf85c0f", "name": "i4niaccc", "rank": "0", "osType": "iOS_2.1", "tag": "8dfd0400dba5beb5fe37b8e05b2209f2c87b22ab598c954d2168a46d1777d521", "setupDone": false, "army": null, "prevArmy": null, "result": -100, "revealedUnits": null }, "clientPlayer": { "left": false, "id": null, "name": null, "rank": null, "osType": null, "tag": null, "setupDone": false, "army": null, "prevArmy": null, "result": 0, "revealedUnits": null }, "rules": { "defenderMovedOnWin": false, "marshallProtected": false, "bombRemoved": false, "rangeAttack": true, "attackerWinsOnTie": false, "chasing": false, "jumping": false, "revealUnits": false, "markMovedUnits": false } }, { "gameId": 70054, "creationDate": "Tue May 10 15:52:44 UTC 2011", "name": "i4niaccc", "state": 0, "lastCmdPlayerType": 1, "lastMoveUnitId": -1, "lastMoveToRow": -1, "lastMoveToCol": -1, "lastCmd": 8, "lastCoinToss": -1, "serverPlayer": { "left": false, "id": "040e5d67ec2042700e73f5b4baf1e6cc2cf85c0f", "name": "i4niaccc", "rank": "0", "osType": "iOS_2.1", "tag": "8dfd0400dba5beb5fe37b8e05b2209f2c87b22ab598c954d2168a46d1777d521", "setupDone": false, "army": null, "prevArmy": null, "result": -100, "revealedUnits": null }, "clientPlayer": { "left": false, "id": null, "name": null, "rank": null, "osType": null, "tag": null, "setupDone": false, "army": null, "prevArmy": null, "result": 0, "revealedUnits": null }, "rules": { "defenderMovedOnWin": false, "marshallProtected": true, "bombRemoved": false, "rangeAttack": true, "attackerWinsOnTie": false, "chasing": false, "jumping": false, "revealUnits": false, "markMovedUnits": false } }, { "gameId": 69044, "creationDate": "Mon May 09 16:48:23 UTC 2011", "name": "DuoPackLeader", "state": 1, "lastCmdPlayerType": 1, "lastMoveUnitId": -1, "lastMoveToRow": -1, "lastMoveToCol": -1, "lastCmd": 3, "lastCoinToss": -1, "serverPlayer": { "left": false, "id": "G:402633397", "name": "DuoPackLeader", "rank": "4", "osType": "iOS", "tag": "9c4f77aaebd4618453e8ae3c321b8230e8d87944e9989a33f043af586b233063", "setupDone": true, "army": "0,0,6;1,0,5;2,0,7;3,1,0;4,1,6;5,1,9;6,2,3;7,3,3;8,1,5;9,1,7;10,2,6;11,2,7;12,3,0;13,3,5;14,3,7;15,3,8;16,0,2;17,0,4;18,0,8;19,2,2;20,3,6;21,0,0;22,0,3;23,0,9;24,1,3;25,0,1;26,3,1;27,3,4;28,3,9;29,1,2;30,2,0;31,2,5;32,2,8;33,1,1;34,1,4;35,1,8;36,2,1;37,3,2;38,2,4;39,2,9", "prevArmy": "0,0,6;1,0,5;2,0,7;3,1,0;4,1,6;5,1,9;6,2,3;7,3,3;8,1,5;9,1,7;10,2,6;11,2,7;12,3,0;13,3,5;14,3,7;15,3,8;16,0,2;17,0,4;18,0,8;19,2,2;20,3,6;21,0,0;22,0,3;23,0,9;24,1,3;25,0,1;26,3,1;27,3,4;28,3,9;29,1,2;30,2,0;31,2,5;32,2,8;33,1,1;34,1,4;35,1,8;36,2,1;37,3,2;38,2,4;39,2,9", "result": -100, "revealedUnits": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" }, "clientPlayer": { "left": false, "id": "040e5d67ec2042700e73f5b4baf1e6cc2cf85c0f", "name": "i4niac", "rank": "0", "osType": "iOS_2.1", "tag": "8dfd0400dba5beb5fe37b8e05b2209f2c87b22ab598c954d2168a46d1777d521", "setupDone": false, "army": null, "prevArmy": null, "result": -100, "revealedUnits": null }, "rules": { "defenderMovedOnWin": false, "marshallProtected": true, "bombRemoved": false, "rangeAttack": false, "attackerWinsOnTie": false, "chasing": false, "jumping": false, "revealUnits": false, "markMovedUnits": false } }, { "gameId": 74001, "creationDate": "Mon May 09 17:05:14 UTC 2011", "name": "Battyboy99", "state": 1, "lastCmdPlayerType": -1, "lastMoveUnitId": -1, "lastMoveToRow": -1, "lastMoveToCol": -1, "lastCmd": 0, "lastCoinToss": -1, "serverPlayer": { "left": false, "id": "G:402122695", "name": "Battyboy99", "rank": "0", "osType": "iOS", "tag": "3801e47c3283a8a6b96c880232b39e90760a1f213f494d3ad741c30f4bcb715c", "setupDone": false, "army": null, "prevArmy": null, "result": -100, "revealedUnits": null }, "clientPlayer": { "left": false, "id": "040e5d67ec2042700e73f5b4baf1e6cc2cf85c0f", "name": "i4niac", "rank": "0", "osType": "iOS_2.1", "tag": "8dfd0400dba5beb5fe37b8e05b2209f2c87b22ab598c954d2168a46d1777d521", "setupDone": false, "army": null, "prevArmy": null, "result": -100, "revealedUnits": null }, "rules": { "defenderMovedOnWin": false, "marshallProtected": true, "bombRemoved": false, "rangeAttack": false, "attackerWinsOnTie": false, "chasing": false, "jumping": false, "revealUnits": false, "markMovedUnits": false } }, { "gameId": 75001, "creationDate": "Mon May 09 17:05:46 UTC 2011", "name": "Süner", "state": 1, "lastCmdPlayerType": -1, "lastMoveUnitId": -1, "lastMoveToRow": -1, "lastMoveToCol": -1, "lastCmd": 0, "lastCoinToss": -1, "serverPlayer": { "left": false, "id": "G:550746163", "name": "Süner", "rank": "8", "osType": "iOS", "tag": "0338addc91b361d3101bf3c55efede784ab21c9ab7a4ec1858f60ccdd73fa901", "setupDone": false, "army": null, "prevArmy": null, "result": -100, "revealedUnits": null }, "clientPlayer": { "left": false, "id": "040e5d67ec2042700e73f5b4baf1e6cc2cf85c0f", "name": "i4niac", "rank": "0", "osType": "iOS_2.1", "tag": "8dfd0400dba5beb5fe37b8e05b2209f2c87b22ab598c954d2168a46d1777d521", "setupDone": false, "army": null, "prevArmy": null, "result": -100, "revealedUnits": null }, "rules": { "defenderMovedOnWin": false, "marshallProtected": true, "bombRemoved": false, "rangeAttack": false, "attackerWinsOnTie": false, "chasing": false, "jumping": false, "revealUnits": false, "markMovedUnits": false } }, { "gameId": 68052, "creationDate": "Tue May 10 15:26:48 UTC 2011", "name": "i4niaccc", "state": 1, "lastCmdPlayerType": 1, "lastMoveUnitId": -1, "lastMoveToRow": -1, "lastMoveToCol": -1, "lastCmd": 8, "lastCoinToss": -1, "serverPlayer": { "left": false, "id": "040e5d67ec2042700e73f5b4baf1e6cc2cf85c0f", "name": "i4niaccc", "rank": "0", "osType": "iOS_2.1", "tag": "8dfd0400dba5beb5fe37b8e05b2209f2c87b22ab598c954d2168a46d1777d521", "setupDone": false, "army": null, "prevArmy": null, "result": -100, "revealedUnits": null }, "clientPlayer": { "left": false, "id": "040e5d67ec2042700e73f5b4baf1e6cc2cf85c0f", "name": "i4niaccc", "rank": "0", "osType": "iOS_2.1", "tag": "8dfd0400dba5beb5fe37b8e05b2209f2c87b22ab598c954d2168a46d1777d521", "setupDone": false, "army": null, "prevArmy": null, "result": -100, "revealedUnits": null }, "rules": { "defenderMovedOnWin": false, "marshallProtected": true, "bombRemoved": false, "rangeAttack": true, "attackerWinsOnTie": false, "chasing": false, "jumping": false, "revealUnits": false, "markMovedUnits": false } } ], "status": "success" } }

mgrebenets commented 13 years ago

Will cose it. Same error with json-framework.It's not touchjson after all, it's the data, on anything running 3.1.3 data is not received properly.