|
Titlul: JSON parser Scris de: Apostol Vlad din Mai 11, 2015, 12:44:16 Se cere implementarea unei structuri de date (hashtable) care sa eficientizeze interogarea si manipularea obiectelor de tip JSON.
example.json [ { "firstName": "John", "lastName": "Smith", "isAlive": true, "age": 25, "address": { "streetAddress": "21 2nd Street", "city": "New York", "state": "NY", "postalCode": "10021-3100" }, "phoneNumbers": [ { "type": "home", "number": "212 555-1234" }, { "type": "office", "number": "646 555-4567" } ], "children": [ ], "spouse": null } ] Tipurile de baza pentru obiectele JSON sunt: JSON_ARRAY: vector cu 0 sau mai multe objects JSON_OBJECT: colectie de perechi cheie:valoare unde cheia este de tip string (unica in cadrul object-ului) iar valoarea poate fi de orice tip JSON_STRING: secventa de 0 sau mai multe caractere ASCII JSON_BOOL: true sau false JSON_NUMBER: intreg JSON_NULL: valoare nula, reprezentata de cuvantul null Operatiile pe care structura voastra de date trebuie sa le efectueze sunt: get(succesiune_chei): afiseaza valoarea ultimei chei din succesiunea de chei put(succesiune_chei, valoare): adauga/modifica perechea ultima_cheie:valoare del(succesiune_chei): sterge perechea ultima_cheie:valoare Operatiile pot esua cu urmatoarele mesaje de eroare, urmate de valoarea cheii la care au esuat: ERROR_NOT_ARRAY: se cere un index de la o cheie care nu reprezinta un JSON_ARRAY ERROR_NOT_OBJECT: se cere o cheie de la o cheie care nu reprezinta un JSON_OBJECT ERROR_INDEX_OUT_OF_RANGE: se cere un index de la o cheie care reprezinta un JSON_ARRAY cu un numar mai mic de intrari decat index-ul cerut KEY_NOT_FOUND: cheia cautata nu a fost gasita Fiecare mesaj de eroare este precedat de numele operatiei la care a aparut eroarea. Pentru a observa comportamentul operatiilor de mai sus, urmariti exemplul de input/output. Exemplu input/output Operatiile de mai jos sunt efectuate asupra JSON-ului din example.json input GET GET 0 GET 0 "firstName" GET 0 "age" GET 0 "isAlive" GET 0 "spouse" GET 0 "notAKey" GET 0 "address" "city" GET 0 "address" "notAKey" GET 0 "notAKey1" "notAKey2" GET 0 "spouse" 0 GET 0 "phoneNumbers" 0 GET 0 "phoneNumbers" 0 "type" GET 0 "children" GET 0 "children" 0 PUT "aKey" "aValue" PUT 0 "aKey" "aValue" GET 0 "aKey" PUT 0 "address" null GET 0 "address" "city" GET 0 "address" PUT 0 "spouse" "Jessica" GET 0 "spouse" PUT 0 "phoneNumbers" 1 "type" "mobile" GET 0 "phoneNumbers" 1 "type" PUT 0 "children" 0 "name" "John Snow" DEL 0 "firstName" GET 0 "firstName" DEL 0 "notAkey" DEL 1 "firstName" GET 0 "phoneNumbers" 0 "number" DEL 0 "phoneNumbers" 0 GET 0 "phoneNumbers" 0 "number" DEL 0 "spouse" DEL 0 "address" GET 0 "address" "city" output JSON_ARRAY JSON_OBJECT "John" 25 true null GET_KEY_NOT_FOUND "notAKey" "New York" GET_KEY_NOT_FOUND "notAKey" GET_KEY_NOT_FOUND "notAKey1" GET_ERROR_NOT_ARRAY "spouse" JSON_OBJECT "home" JSON_ARRAY GET_ERROR_INDEX_OUT_OF_RANGE "children" PUT_ERROR_NOT_OBJECT root "aValue" GET_ERROR_NOT_OBJECT "address" null "Jessica" "mobile" PUT_ERROR_INDEX_OUT_OF_RANGE "children" GET_KEY_NOT_FOUND "firstName" DEL_INDEX_OUT_OF_RANGE root "212 555-1234" "646 555-4567" GET_KEY_NOT_FOUND "address" Precizari Fisierele de test cu obiectele JSON sunt valide, nu este nevoie sa faceti verificari suplimentare. Indicatii de implementare Executabilul se va numi "jsonparser" si va primi exact 3 parametri: fisierul ce contine obiectul JSON, fisierul de input si fisierul de output. Se poate folosi doar clasa string din STL. Hashtable-ul se afla in atasament. Titlul: Răspuns: JSON parser Scris de: Darius-Florentin Neatu din Mai 11, 2015, 13:22:26 Pentru cine nu a inteles cerinta, dar vrea sa dea o mana de ajutor.. Gaseste detalii la
http://ocw.cs.pub.ro/courses/sd-ca/teme/teme-03 (http://ocw.cs.pub.ro/courses/sd-ca/teme/teme-03) :)) =)) :yahoo: Titlul: Răspuns: JSON parser Scris de: Popescu Silviu Emil din Mai 11, 2015, 14:07:08 Si daca te mai prind pe aici, te paste-o depunctare :banana: :fighting:
Titlul: Răspuns: JSON parser Scris de: Darius-Florentin Neatu din Mai 11, 2015, 14:16:36 Silviu, presupun ca te adresai autorului acestui post. Oricum, mi s-a parut tare faza. Ar trebui sa ii dati macar 1p din 100p pentru initiativa :))
Titlul: Răspuns: JSON parser Scris de: Popescu Silviu Emil din Mai 11, 2015, 14:18:16 Normal, Blatabuz! :weightlift:
|