Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Mikähän tuossa JSONissa on tänään niin vaikeaa

Sivun loppuun

Multibyte [07.11.2016 12:26:20]

#

Kun en vaan saa tehtyä standardin mukaista JSONia.

Idea on yksinkertainen:
jsonissa on kieliindeksi fi,sv,en, joista jokainen pitää sisällään yhden taulukon, jossa on kaksi mjonoa.

Tarkoitus on siis yksinkertaisesti valita jsonista kielikodiin perusteella mjonot.
Tyyliin json['fi'][0] tai json['fi'][1]

Tässä on viimeisin ja vaikka minkälaista olen koittanut, mutta aina se herjaa jotain:

{"en":[{"asd","asdasd"}],"sv":[{"zxczxc","zcxzxcz"}],"fi":[{"qewqew","qweqweq"}]}

The Alchemist [07.11.2016 13:42:29]

#

Kai se kuitenkin on aika selvää, että sulla on taulukoiden sisällä vain yksi elementti, joka yrittää kai olla jonkinlainen olio, mutta siltä osin syntaksi on täysin väärin.

{"foo", "bar"} ei ole kelvollinen notaatio, koska oliot vaativat arvo-avainpareja. Taulukkoa merkitään hakasulkein, geneerisiä olioita aaltosulkein. Taulukon arvot annetaan pilkuin erotettuna listana, oliot vaativat avain-arvopareja. (Joskin javascript-koodissa {foo, bar} on kelvollinen ilmaisu, mikäli foo ja bar ovat muuttujia.)

["foo", "bar", "baz"]
{"foo": "FOO", "bar": "BAR"}

Multibyte [07.11.2016 14:08:04]

#

No viimeinkin. Lisäsin raa'asti "0" ja "1" objektit, jotka sisältää nuo mjonot ts.avain-arvo-parit.

Aiemmin yritin, että tuon en avaimen arvo olisi ollut taulukko, jossa nuo mjonot, mutten saanut sitäkään pelaamaan.

En ymmärrä, miten oli niin vaikiaa...

The Alchemist [07.11.2016 14:09:47]

#

Jos ennemmin lukisit viestini etkä kikkailisi objecteilla, kun oikeasti tarvitset taulukoita. Ne käyttäytyvät aivan eri tavalla, jos niillä tekee jotain muuta kuin lukee indeksejä.

jlaire [07.11.2016 14:56:43]

#

The Alchemist kirjoitti:

(Joskin javascript-koodissa {foo, bar} on kelvollinen ilmaisu, mikäli foo ja bar ovat muuttujia.)

Vain lausetasolla, koska aaltosulkeet tulkitaan silloin lohkona eikä objektina.

The Alchemist [07.11.2016 15:10:00]

#

Ei, koska pilkku on kelvollinen merkki vain parametrilistauksissa.

"use strict";

let a = 2;
let b = "X";
let foo = {a, b};

console.log(foo);

// foo := {a: 2, b: "X"}

Metabolix [07.11.2016 16:32:43]

#

Ongelman oikea ratkaisu olisi ottaa ylimääräiset {}-merkit pois:

{"en":["en0","en1"],"sv":["sv0","sv1"],"fi":["fi0","fi1"]}

jlaire [08.11.2016 01:35:52]

#

Jaa, en olettanut että "javascript-koodi" viittaisi pelkästään kielen uusiin versioihin. Aina on ollut, että {42, 42}; on validi blocki, kuten myös {foo: 42};, joka sisältää labelin.

Pilkku on myös operaattori ja sitä voi käyttää parametrilistojen ulkopuolellakin (?).

Grez [08.11.2016 07:07:38]

#

jlaire kirjoitti:

viittaisi pelkästään kielen uusiin versioihin. Aina on ollut, että {42, 42}; on validi blocki, kuten myös {foo: 42};, joka sisältää labelin.

Olennaista ei ole onko {42, 42} suoritettavassa koodissa sinänsä validi blokki (joka tosin on hyödytön muuhun kuin kellojaksojen kuluttamiseeen), vaan olisiko var muuttuja = { 42, 42 } validi blokki.

Olennaista tässä on, että ollaan sijoittamssa dataa muuttujiin, ei kielen versiot.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta