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"}]}
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"}
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...
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ä.
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.
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"}
Ongelman oikea ratkaisu olisi ottaa ylimääräiset {}-merkit pois:
{"en":["en0","en1"],"sv":["sv0","sv1"],"fi":["fi0","fi1"]}
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 (?).
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.