Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Json2CSharp Keywords are not escaped. #10

Closed
michaelcheers opened this issue Aug 6, 2020 · 6 comments · Fixed by #14
Closed

Json2CSharp Keywords are not escaped. #10

michaelcheers opened this issue Aug 6, 2020 · 6 comments · Fixed by #14
Labels
bug Something isn't working help wanted Extra attention is needed

Comments

@michaelcheers
Copy link

You need to escape keyword names such as return.
Example JSON:

{ "response": { "value": { "search_params": { "to_type": "airport", "flyFrom_type": "airport" }, "time": 1, "connections": [], "currency": "pln", "currency_rate": 0.2348, "data": { "airlines": [ "W6", "FR" ], "baglimit": { "hand_height": 40, "hand_length": 55, "hand_weight": 7, "hand_width": 23, "hold_height": 52, "hold_length": 78, "hold_weight": 20, "hold_width": 28, "hold_dimensions_sum": 158 }, "bags_price": {}, "booking_token": "oKWrjE3p79Fphzv+baF3C2h1PDgCet9WaEXSzPuPgCEbnZfp1jYeu4WPBYkWhnvFVdMUHtSDW6qgykuuve1Fglx/Cp7ojKGgP1wN57eDDm7174lwXFwCaExwY1oviADeYzWzkvgFnSYx5w19mnX0t3KunnedJScRvA426om/JqXmCfbfEnVyryB+6ywjr8CmwBhAaTGz8UFxe2F+S2Ck6XhTPyoaf8VI4gBOnoVY1rlXVE/Xi+9bnpqQN+jP8i74zmLVb4LiWhMreQqaG1acc0xIEdZQxq1qllX0t9JSsYyZ8kS41KheurCLH/u2mpJgowJnySLQ/w5a0J7yKb7dBF+/6CVD52a+FH6PibsRXJWNQso336gGlqfjIQ72f8Oi2Ep7IXzuKPOvC2W/Ucp5Le+n0kz6VckLLrol1IkFwCAkP0Pyf5v6FrsWEYF53la5Ig3dLDPy32Yhpu9L1TqImtfryq3mFr53Fh6Z/hZoaJH7yfd2h8aqj92snLfCkvl72VAfJITkdE8vMNGz5quCYw60mgUdXvBMzaNeSPgtWMKRM+kzzTb2YJwmBhjS8B8Qa8j/zixcnMEiO4VdksgZq2dcFpm7fjx670ml0y87G4+ebECvzDaP8oClNJ2WmFtl3R8/EQ+2+LaUKrktN/OWDJT92sfS1K7LP1OTC/1uQrHG4vSqo0A+SofRTw2UP/08kxoJoc6IkrsdmVPQlPRIPi/r9cPsWaRe1JsoBYCa0tz2FWWXr1pLX3RQjrNUq2Vo8Ns6/FItzkr4CNhtHOTin6qITvyTqio610v5ovrhS4lL13yIYfHu0s3n0d/Gp/DWryGOZsIC5v+D9S8P/s5hCP9m51gizRSNjpQn/LpFin23pztXPRR6gvHVXZKRhUOAdyyis5gPHL+9A7n7THciyKVs0bM3XhQG3EpUWhCYUpjVRPF69+2RXENVCOF3Ys9SfBjsv3vcsJTMNQs2Fh+Sk1hHnY9WkgWs3EK8lN0mx2NOcdKU6nAxg4np4QtyF/I5SU33wMBxXdJ3BpltM33TGUG9xpeN0DPLP0S1oXfjIdGfBrLPJqpq7S2QC44BekgXdYYje92wUW7aJYAJhaJi2e93Q5JGf3V6caaxWTa8xsQ=", "cityFrom": "Prague", "cityTo": "Frankfurt", "conversion": { "EUR": 104 }, "countryFrom": { "code": "CZ", "name": "Czechia" }, "countryTo": { "code": "DE", "name": "Germany" }, "deep_link": "https://www.kiwi.com/deep?from=PRG&to=FRA&departure=04-12-2018&return=06-12-2018&flightsId=4210030485405823_0%7C3971436194349625_0%7C3971436206433809_0%7C3908763979435451_0%7C3956043040686669_0&price=104&passengers=1&affilid=kayak_en&lang=en&currency=EUR&booking_token=oKWrjE3p79Fphzv+baF3C2h1PDgCet9WaEXSzPuPgCEbnZfp1jYeu4WPBYkWhnvFVdMUHtSDW6qgykuuve1Fglx/Cp7ojKGgP1wN57eDDm7174lwXFwCaExwY1oviADeYzWzkvgFnSYx5w19mnX0t3KunnedJScRvA426om/JqXmCfbfEnVyryB+6ywjr8CmwBhAaTGz8UFxe2F+S2Ck6XhTPyoaf8VI4gBOnoVY1rlXVE/Xi+9bnpqQN+jP8i74zmLVb4LiWhMreQqaG1acc0xIEdZQxq1qllX0t9JSsYyZ8kS41KheurCLH/u2mpJgowJnySLQ/w5a0J7yKb7dBF+/6CVD52a+FH6PibsRXJWNQso336gGlqfjIQ72f8Oi2Ep7IXzuKPOvC2W/Ucp5Le+n0kz6VckLLrol1IkFwCAkP0Pyf5v6FrsWEYF53la5Ig3dLDPy32Yhpu9L1TqImtfryq3mFr53Fh6Z/hZoaJH7yfd2h8aqj92snLfCkvl72VAfJITkdE8vMNGz5quCYw60mgUdXvBMzaNeSPgtWMKRM+kzzTb2YJwmBhjS8B8Qa8j/zixcnMEiO4VdksgZq2dcFpm7fjx670ml0y87G4+ebECvzDaP8oClNJ2WmFtl3R8/EQ+2+LaUKrktN/OWDJT92sfS1K7LP1OTC/1uQrHG4vSqo0A+SofRTw2UP/08kxoJoc6IkrsdmVPQlPRIPi/r9cPsWaRe1JsoBYCa0tz2FWWXr1pLX3RQjrNUq2Vo8Ns6/FItzkr4CNhtHOTin6qITvyTqio610v5ovrhS4lL13yIYfHu0s3n0d/Gp/DWryGOZsIC5v+D9S8P/s5hCP9m51gizRSNjpQn/LpFin23pztXPRR6gvHVXZKRhUOAdyyis5gPHL+9A7n7THciyKVs0bM3XhQG3EpUWhCYUpjVRPF69+2RXENVCOF3Ys9SfBjsv3vcsJTMNQs2Fh+Sk1hHnY9WkgWs3EK8lN0mx2NOcdKU6nAxg4np4QtyF/I5SU33wMBxXdJ3BpltM33TGUG9xpeN0DPLP0S1oXfjIdGfBrLPJqpq7S2QC44BekgXdYYje92wUW7aJYAJhaJi2e93Q5JGf3V6caaxWTa8xsQ=", "distance": 406.5, "duration": { "departure": 15600, "return": 34800, "total": 50400 }, "facilitated_booking_available": false, "flyFrom": "PRG", "flyTo": "FRA", "has_airport_change": false, "id": "4210030485405823_0|3971436194349625_0|3971436206433809_0|3908763979435451_0|3956043040686669_0", "local_arrival": "2018-12-04T16:35:00.000Z", "local_departure": "2018-12-04T12:15:00.000Z", "nightsInDest": 2, "pnr_count": 5, "price": 104, "quality": 239.99966, "rank": 0.0092, "route": [ { "airline": "FR", "bags_recheck_required": false, "cityFrom": "Prague", "cityTo": "Budapest", "combination_id": "4210030485405823", "equipment": null, "fare_basis": "NZ1299DC", "fare_classes": "N", "fare_family": "", "flight_no": 4092, "flyFrom": "PRG", "flyTo": "BUD", "guarantee": false, "id": "4210030485405823_0", "last_seen": "2018-11-08T15:30:07.000Z", "local_arrival": "2018-12-04T13:25:00.000Z", "local_departure": "2018-12-04T12:15:00.000Z", "operating_carrier": null, "refresh_timestamp": "2018-11-08T15:30:07.000Z", "return": 0, "utc_arrival": "2018-12-04T12:25:00.000Z", "utc_departure": "2018-12-04T11:15:00.000Z", "vehicle_type": "aircraft" }, { "airline": "W6", "bags_recheck_required": false, "cityFrom": "Budapest", "cityTo": "Frankfurt", "combination_id": "3971436194349625", "equipment": null, "fare_basis": "PRREG", "fare_classes": "P", "fare_family": "", "flight_no": 2311, "flyFrom": "BUD", "flyTo": "FRA", "guarantee": true, "id": "3971436194349625_0", "last_seen": "2018-11-08T15:52:47.000Z", "local_arrival": "2018-12-04T16:35:00.000Z", "local_departure": "2018-12-04T14:50:00.000Z", "operating_carrier": null, "refresh_timestamp": "2018-11-08T15:52:47.000Z", "return": 0, "utc_arrival": "2018-12-04T15:35:00.000Z", "utc_departure": "2018-12-04T13:50:00.000Z", "vehicle_type": "aircraft" }, { "airline": "FR", "bags_recheck_required": false, "cityFrom": "Frankfurt", "cityTo": "Venice", "combination_id": "3971436206433809", "equipment": null, "fare_basis": "NZ999DC", "fare_classes": "N", "fare_family": "", "flight_no": 2416, "flyFrom": "FRA", "flyTo": "TSF", "guarantee": false, "id": "3971436206433809_0", "last_seen": "2018-11-08T15:43:23.000Z", "local_arrival": "2018-12-06T14:30:00.000Z", "local_departure": "2018-12-06T13:10:00.000Z", "operating_carrier": null, "refresh_timestamp": "2018-11-08T15:43:23.000Z", "return": 1, "utc_arrival": "2018-12-06T13:30:00.000Z", "utc_departure": "2018-12-06T12:10:00.000Z", "vehicle_type": "aircraft" }, { "airline": "FR", "bags_recheck_required": false, "cityFrom": "Venice", "cityTo": "City of Brussels", "combination_id": "3908763979435451", "equipment": null, "fare_basis": "NZ999DC", "fare_classes": "N", "fare_family": "", "flight_no": 6056, "flyFrom": "TSF", "flyTo": "CRL", "guarantee": true, "id": "3908763979435451_0", "last_seen": "2018-11-08T15:06:39.000Z", "local_arrival": "2018-12-06T18:45:00.000Z", "local_departure": "2018-12-06T17:05:00.000Z", "operating_carrier": null, "refresh_timestamp": "2018-11-08T15:06:39.000Z", "return": 1, "utc_arrival": "2018-12-06T17:45:00.000Z", "utc_departure": "2018-12-06T16:05:00.000Z", "vehicle_type": "aircraft" }, { "airline": "FR", "bags_recheck_required": false, "cityFrom": "City of Brussels", "cityTo": "Prague", "combination_id": "3956043040686669", "equipment": null, "fare_basis": "NZ1299DC", "fare_classes": "N", "fare_family": "", "flight_no": 2121, "flyFrom": "CRL", "flyTo": "PRG", "guarantee": true, "id": "3956043040686669_0", "last_seen": "2018-11-08T15:54:24.000Z", "local_arrival": "2018-12-06T22:50:00.000Z", "local_departure": "2018-12-06T21:20:00.000Z", "operating_carrier": null, "refresh_timestamp": "2018-11-08T15:54:24.000Z", "return": 1, "utc_arrival": "2018-12-06T21:50:00.000Z", "utc_departure": "2018-12-06T20:20:00.000Z", "vehicle_type": "aircraft" } ], "routes": [ "- PRG\n- FRA", "- FRA\n- PRG" ], "transfers": [], "type_flights": [ "lcc-FR", "lcc-W6" ], "utc_arrival": "2018-12-04T15:35:00.000Z", "utc_departure": "2018-12-04T11:15:00.000Z" } } } }

The return comes up as return and then it messes up the file. It should be @return.

List of reserved words (for your convenience):

abstract as base bool break byte case catch char checked class const continue decimal default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long namespace new null object operator out override params private protected public readonly ref return sbyte sealed short sizeof stackalloc static string struct switch this throw true try typeof uint ulong unchecked unsafe ushort using virtual void volatile while

They should be replaced each reserved word with @reservedword.

@michaelcheers michaelcheers changed the title Json2CSharp Json2CSharp Keywords are not escaped. Aug 6, 2020
@michaelcheers
Copy link
Author

Also, it seems that if the keys on the json are numbers, they aren't escaped. You could escape those with an underscore. I'm not sure if you would have to also add an attribute.

@Json2CSharp
Copy link
Owner

Yes this issue was raised before i havn't got the time to fix it yet, should be easy but i'm super busy these two weeks, i will make the project open source for contribution and add these two cases as unit tests, this will take some time in order to properly set up documenationts, anyway thanks for letting me know !

@michaelcheers
Copy link
Author

michaelcheers commented Aug 7, 2020 via email

@Json2CSharp
Copy link
Owner

I'm glad you like it many Thanks !

@Json2CSharp Json2CSharp pinned this issue Aug 15, 2020
@Json2CSharp Json2CSharp added bug Something isn't working help wanted Extra attention is needed labels Aug 15, 2020
@tyeth
Copy link
Contributor

tyeth commented Sep 21, 2020

Just to add, thank you, this has saved me hours of messing about, maybe I'll take a look

@tyeth
Copy link
Contributor

tyeth commented Sep 21, 2020

Had a first stab, seems okay but not thought about class definitions, only class members (fields/properties).
Added failing test then worked from there. #14
Have a look @Json2CSharp and let me know if there are changes I should make.

Also forgot to mention that the other site that regularly saves my life is https://nimbletext.com/Live

@Json2CSharp Json2CSharp unpinned this issue Sep 30, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working help wanted Extra attention is needed
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants