» »

Parsanje grdega JSON-a

Parsanje grdega JSON-a

njyngs ::

Kako bi se lotili parsanje sledečega JSON-a:

{
  "1" : {...objekt...},
  "2" : {...objekt...},
  "3" : {...objekt...},
  "4" : {...objekt...}
}


S tem, da so "1", "2", popolnoma random spremenljivi, objekt je pa povsod enakega tipa.

Ni torej "pravilen/standarden?"
{
  "items":[ 
    {...objekt...},
    {...objekt...},
    {...objekt...},
    {...objekt...}
  ]
}
  • spremenil: njyngs ()

jype ::

Jah, če ni pravilen, potem ni JSON in moraš napisati svoj parser za ta neJSON.

Najlažje je verjetno tako, da vzdržuješ stanje odpiranja in zapiranja blokov in se ob vsakem zaprtem bloku pretvarjaš, da si videl vejico.

njyngs ::

Saj izgleda da bom res moral pisat svoj parser za to žalost, ki je poskušala biti JSON.

erezervacija ::

mislim, da je to povsem pravilen (resda cuden) json. po mojem poklices Object.keys in dobis....

var somedata = {
"Pizza" : ["Cheese", "Bread", "Sauce"]
}

// to get all keys of this somedata object, returned as an array
Object.keys(somedata) // returns ["Pizza"]

Zgodovina sprememb…

WhiteAngel ::

OP: Primer mi izgleda kot slovar (map). Ti pa zelis imeti seznam (list)? JSON mi drugace zgleda pravilen, ce izvzamem manjko vejic.

Zgodovina sprememb…

njyngs ::

Vejice so moja napaka, ker sem na hitro natipkal in sem jih izpustil. Popravljeno.

Imata pa prav. Map dobim brez problema. Bo pa šlo z object mapperjem naprej. Hvala.

Zgodovina sprememb…

  • spremenil: njyngs ()

kuall ::

Zakaj pa vidva z jUpetom mislita, da to ni pravilen json? json format je:
{
name: value,
name: value,
...
}

s tem, da se lahko objekte vgnezdi. ni tako?

WhiteAngel ::

kuall je izjavil:

Zakaj pa vidva z jUpetom mislita, da to ni pravilen json? json format je:
{
name: value,
name: value,
...
}

s tem, da se lahko objekte vgnezdi. ni tako?


V originalnem postu so manjkale vejice. Sedaj je ok.

njyngs ::

kuall je izjavil:

Zakaj pa vidva z jUpetom mislita, da to ni pravilen json? json format je:
{
name: value,
name: value,
...
}

s tem, da se lahko objekte vgnezdi. ni tako?

Če imaš (dinamično) listo objektov enakega tipa "ponavadi" daješ { "lista":[ {},{},{} ] } in ne vsakega posebej s svojim imenom.

Zgodovina sprememb…

  • spremenil: njyngs ()

smacker ::

Po kateri navadi je to?

jype ::

Zdaj, ko si dodal vejice, tudi jaz ne vidim več nepravilnosti.

Če so imena cela števila, potem je to neobičajno, ni pa neveljavno.

Zgodovina sprememb…

  • spremenilo: jype ()

njyngs ::

smacker je izjavil:

Po kateri navadi je to?

Torej vi delate za dinamični spisek tako?
{
  "item1":{...objekt...},
  "item2":{...objekt...},
  "item3":{...objekt...},
  "item4":{...objekt...},
  "item5":{...objekt...},
  "item6":{...objekt...}
}

O bože :)

EDIT: Drugače sem že rešil kot je bilo zgoraj omenjeno
Map dobim brez problema. Bo pa šlo z object mapperjem naprej. Hvala.

Zgodovina sprememb…

  • spremenil: njyngs ()

erezervacija ::

ce je ta struktura bolj razvejana, to sploh ni tako neumno, vsaj jaz sem se enkrat lotil zadeve tocno na tak nacin (in se vse da narediti). je pa seveda z arrayi naceloma lazje delati

njyngs ::

Se strinjam, da obstajajo case-i kjer je smiselna bolj razvejana struktura.

smacker ::

Odvisno za kaj rabiš. Če je prva operacija, da preveriš ali tak JSON vsebuje "item4", potem je to vsekakor bolje, kot če bi "item4" mel v objektu kot "id: item4". Programira se glede na potrebe, ne glede na navade.

Zgodovina sprememb…

  • spremenil: smacker ()

njyngs ::

smacker je izjavil:

Odvisno za kaj rabiš. Če je prva operacija, da preveriš ali tak JSON vsebuje "item4", potem je to vsekakor bolje, kot če bi "item4" mel v objektu kot "id: item4". Programira se glede na potrebe, ne glede na navade.

Se strinjam za določene case. Za moj case je v tem primeru array boljša izbira.

Spura ::

Ne razumem kaj je sploh problem. Vsak JSON parser dela s katerokoli pravilno JSON obliko.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Pomoč pri json datoteki

Oddelek: Programiranje
71268 (915) sasha991
»

[Android] setText iz AsyncTask

Oddelek: Programiranje
7844 (761) golobich
»

Poizvedba v MySql z Androidom

Oddelek: Programiranje
61885 (1659) MrStein
»

[asp.net]c# In Json

Oddelek: Izdelava spletišč
5963 (734) shadeX
»

Masterpage in jQuery(ajax call)

Oddelek: Programiranje
61351 (1179) hatchette

Več podobnih tem