Navigacija

Vartotojų tinkle

Prisijungusių svečių: 771
Prisijungusių narių: 0
Prisijungusių narių nėra

Registruoti nariai: 25,956
Naujausias narys: saulyzas

Naujausi straipsniai

Paskutiniai nariai

saulyzas 5 dienos
MaFetas 1 savaitė
TOMIJUS 1 savaitė
ozzWANTED 2 savaitės
Reikalas10 savaitės
Jaunelis17 savaitės
lanis17 savaitės
And2s18 savaitės
Memento Mori23 savaitės
Quwqkibor25 savaitės
asirija29 savaitės
tomeem31 savaitės
weberiz34 savaitės
mRokass37 savaitės
kartoonas38 savaitės
grunskiz41 savaitės
Bruksnys41 savaitės
illusion41 savaitės
ordo42 savaitės
Jurgaila43 savaitės

Informacija:


OS: Unknown
Naršyklė: Nežinoma
IP: 18.224.63.123
Naujienų: 529
Straipsnių: 235
Temų: 52,588
Postų: 522,537
Postų pask. parą: 0
Shout'ų pask. parą: 0
P.S.C. pask. parą: 0
Nuorodų kataloge: 13

Lankomumo Statistika

Peržiūrų šiandien: 22

Iš viso peržiūrų: 22948724

Prisijungti

REGISTRUOTIS
Nario vardas

Slaptažodis



Pamiršai slaptažodį?
Paprašyk naujo

Aktyvuoti save

Šaukykla

Jei norite rašyti žinutes, turite prisijungti.

MaFetas
2024 Lap. 13 22:11:57
hey how, geras dar veikiantis saitas?

Jaunelis
2024 Lie. 25 11:07:43
Oho vis dar veikia svetainė akinanti šypsen Šimtas metų, matau Šaukykloje nuostalgija. Smagu panaršyt po forumą ir pažiūrėt senas temas šypsosi

And2s
2024 Lie. 17 19:07:04
2008 pirmą kart čia patekau, man buvo 10m ir čia pramokau programavimo.. smagu skaityti senas žinutes, tokia nostalgija akinanti šypsen ačiū Ozz kad saugoji šitą kultūrinį reliktą šypsosi

ozzWANTED
2024 Sau. 17 01:01:00
Desperatiškus komentarus šaukykloje su accountu po mėnesio prasibuvimo, ištryniau. Pasaulis ir taip juodas. Įjungiam šviesą, prašviesės. šypsosi

Majakas
2023 Gru. 10 19:12:39
Negaliu patikėti jog žinutės/pranešimai visi yra nuo 2008 m akinanti šypsen

Šaukyklos archyvas

Apklausa

Ar esate patenkinti lietuviško vertimo kokybe?

Taip!

Taip, bet yra ką taisyti (parašysiu komentaruose)

Ne

Norėdamas balsuoti turite prisijungti.
Archyvas
Reklama 400x60
Džeisonas - Javos Skripto sūnus

Trumpai - kas tai ir su kuo valgoma:
JSON - Kas tai ?
JSON - JavaScript objektų žymėjimo kalba. (JavaScript Objects Notation)

Oficiali galūnė:
*.json

Oficiali MIME deklaracija ( http://www.iana.org/assignments/media-types/application/ ):
application/json
Pvz. <script type="text/x-json"><-script->

Alternatyvos?
XML.

Kas geriau - XML ar JSON?
Atsakymas: XML privalumas - XML schema, portabilumas į WSDL per SOAP ir kitas aplikacijas,
JSON - labiau skirtas vidiniam tinklapio naudojimui, o patį JSON'ą daugiausiai panaudoja AJAX tipo sistemos.

JSON trūkumai - XSS pavojaus galimybė, nėra date tipo formatų. JSON taip pat netinka dideliems *.json
dokumentams parsinti, kadangi visą dokumentą bando apdoroti sykiu, o ne porcijomis rodyklių pagalba.

XML privalumas - XSS atveju, galima bandyti saugotis naudojant XMLSchema su apribotais duomenų tipais.

Bazinis saugumo validatorius - rekomenduojama įvykdyti prieš interpretuoja JSON kodą:

var my_JSON_object = !(/[^,:{}[]0-9.-+Eaeflnr-u nrt]/.test(
text.replace(/"(.|[^"])*"/g, ''))) &&
eval('(' + text + ')');
 
  • Kas ir kur naudoja JSON?

Firefox source kodo bibliotekos - JSON pagrindu, jose yra aprašyti Firefox nustatymai, ir informacija.

Kas gi yra tas piliečio Javos Skripto sūnus - Džeisonas. Ar jis mums reikalingas?

JSON - tai tekstinis, žmogui suprantamas duomenų formatas atvaizduojantis duomenų struktūras ir asociatyvius masyvus.
JSON dažniausiai naudojamas Ajax'o perduoti duomenims ir yra naudojamas kaip XML alternatyva.
Pats paprasčiausias pavyzdys:

{ "vardas": "Dzeisonas",
"adresas":
{
"gatve": "Geliu 3 - 5",
"miestas": "Nida",
"salis": "Lietuva",
},
"telefonas":
[
"8 65 55001",
"8 55 23991"
]
}

JSON viduje gali būti atvaizduoti paprasti kintamieji, asociatyvus masyvas, paprastas masyvas.

Įsitikinimui, jog JSON yra labiau skaitomas ir paprastesnis nei XML, analogišką informaciją XML formatu:

<pagrindinis>
<vardas>Dzeisonas</vardas>
<adresas>
  <gatve>Geliu 3 - 5</gatve>
  <miestas>Nida</miestas>
  <salis>Lietuva</salis>
</adresas>
<telefonas>8 65 55001</telefonas>
<telefonas>8 55 23991</telefonas>

</pagrindinis>

Tiesa, JSON yra labiau human-readable kodas, užimantis mažiau vietos, bet ir pirmas ir antras dažniausiai yra generuojami sistemų, o ne rašomi rankiniu būdų. Taip pat XML yra skirtas būtent sistemoms, lengvesniam išorinių duomenų nusiskaitymui, todėl JSON ar XML dokumento apimtis nėra esminis kriterijus. Tiesa, JavaScript atveju - tai svarbu, nes JS lėtumą per milijoną operacijų smarkiai įtakoja net ir paprastas tarpas ar ilgesnio pavadinimo kintamasis(todėl naudojami PACKER ir pan. dalykai).

Beje, nors pateiktame pavyzdyje visi duomenys yra eilutės tipo, tačiau JSON palaiko ir daugiau kintamųjų tipų: eilutės(string), skaičiai(integer, real), loginės reikšmės(true, false), masyvai(buvo pavyzdyje), objektai(buvo pavyzdyje), NULL.

Kaip apdoroti duomenis gautus tokiu(JSON) formatu? Tam naudojama eval() funkcija.

var kitamasis = eval("(" + JSON_tekstas + ")");

Taip apdoroję duomenis prie jų galime prieiti kintamasis.vardas, kintamasis.adresas.salis kintamasis.telefonas[0].

Viskas labai šaunu ir atrodo labai paprasta. Ar tikrai? Laikas pakalbėti apie trūkumus.
O trūksta datos bei laiko formatų(įdomu kaip iš tokios padėties sukasi naudojantys JSON? Naudoja eilutės tipo kintamuosius ar datos iš viso nenaudoja?)

Kitas aspektas yra saugumas. Kadangi galima paduoti bet ką, tai kodėl gi nepadavus kokios nors funkcijos? Aišku, ta funkcija turėtų būti protingesnė nei tiesiog alert(). Viena iš problemų su kuria gali susidurti naudojantys JSON, tai XSS (ang. cross site scripting). Javascript turi tokią blogą savybę gautą kodą iš karto įvykdyti, todėl niekada negali būti tikras ką gausi iš JSON. Kita problema CSRF (ang. Cross Site Request Fogery), lietuviškai tai reikštų duomenų vagystės, JSON nėra labai saugus ir bet kas gali išparsinti ir pamatyti duomenų turinį, tam net nereikia labai sudėtingų įrankių ar žinių, užtenka Firefox ir keleto standartinių svetainės kūrėjų įskiepių. Daugiau nesiplėsiu saugumo problemų klausimais, paskaitykite nuorodas pateiktas straipsnio pabaigoje.

Apibendrinant, JSON yra labai paprastas ir suprantamas formatas, lengvai realizuojamas programavime. Jeigu jums svarbus perduodamos informacijos dydis, tai jis turi privalumų prieš XML.

Tačiau JSON yra parsinamas JavaScript kompiliatoriaus, kuris yra žymiai lėtesnis nei Php kompiliatorius, todėl jeigu apdorojate pvz. 200MB, išoriniu būdu gautą XML dokumentą, tai be abejonės, rodyklių aritmetikos(pointeriu) pagrindi dirbanti Php klasė - XMLReader() bus žymiai greitesnė ir gebės apdoroti visą dokumentą, nes į jį kreipiasi tik konkrečiais CHUNK'ais bei rodyklėmis. Tuo tarpu JSON, bandys ‚suvalgyti' visą tą 200MB Jūsų xml dokumentą.

Daugiau pasiskaityti galite:
Wikipedia
Oficialiame puslapyje
JSON, AJAX, & PHP
JSON AJAX Web Chat
Mastering JSON
JSON for the masses
JSON is not as safe as people think it is
Look Ma, Cross-Domain Scripting!

---
PAVYZDYS: AJAX+ JSON
JSON kodas, kurį iškviesime AJAX pagalba į mūsų HTML dokumentą:
<li>
 <script type="text/x-json" class="meta-data">
  {
   id: 1
  }
 <-script->
 <a>Click me to get ID</a>
</li>
<li>
 <script type="text/x-json" class="meta-data">
  {
   id: 2
  }
 <-script->
 <a>Click me to get ID</a>
</li>
<li>
 <script type="text/x-json" class="meta-data">
  {
   id: 3
  }
 <-script->
 <a>Click me to get ID</a>
</li>


HTML kodas, su jQuery AJAX, kuriame iškviesime aukščiau esantį JSON kodą:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
 <title>jQuery And Script Tags With AJAX Data</title>
 <script type="text/javascript" src="jquery-1.3.2.js"><-script->
 <script type="text/javascript">
 
  // I am a jquery plugin that looks for script tags of class
  // meta-data and applies the JSON to its parent element in
  // the metaData key.
  jQuery.fn.applyMetaData = function(){
   // Find all the embedded script meta-data tags and
   // iterate of them to individually apply them to the
   // direct parent node.
   this.find( "script.meta-data" ).each(
    function( nodeIndex, scriptTag ){
     var script = $( this );
     var parent = script.parent();
     var metaData = {};
 
     // Try to evaluate the JSON meta data.
     try {
      metaData = eval( "(" + script.html() + ")" );
     } catch ( error ){
      // JSON was not valid.
     }
 
     // Store meta data into parent.
     parent.data(
      "metaData",
      jQuery.extend(
       {},
       parent.data( "metaData" ),
       metaData
       )
      );
    }
    )
 
    // Once the script tags have been processed,
    // remove them from the DOM.
    .remove()
   ;
 
   // Return the collection without the script tags.
   return( this.not( "script.meta-data" ) );
  }
 
 
  // I handle the html data response from the AJAX request.
  function populate( htmlData ){
   var html = $( htmlData ).applyMetaData();
 
   // Put HTML into DOM.
   $( "#list" )
    .empty()
    .append( html )
   ;
 
   // Bind click handlers.
   $( "#list a" )
    .attr( "href", "javascript:void( 0 )" )
    .click(
     function( clickEvent ){
      // Alert parent ID.
      alert( $( this ).parent().data( "metaData" ).id );
 
      // Prevent default event.
      return( false );
     }
     )
   ;
  }
 
 
  // When DOM loads, initialize.
  $(
   function(){
    // Grab the remote data via AJAX request.
    $.ajax({
     type: "get",
     url: "script3_data.htm",
     dataType: "html",
     success: populate
     });
   }
   );
 
 <-script->
</head>
<body>
 
 <h1>
  jQuery And Script Tags With AJAX Data
 </h1>
 
 <ul id="list" />
 
</body>
</html>


----
DAR VIENAS PAVYZDYS(PHP5+ ir JSON):

<?php
$json 
'{"a":1,"b":2,"c":3,"d":4,"e":5}';

var_dump(json_decode($json));
var_dump(json_decode($jsontrue));

?>


Pagal @ozzWANTED , PhpFusion-Lt.com.
Pradinės straipsnio versijos autorius, NePo @ Pixel.lt


Straipsnio informacija

Autorius
ozzWANTED
Parašymo data
2010 kovo 19 07:03:34
Komentarų
1
Skaityta
1969
Spausdinti Spausdinti
Komentarai
ozzWANTED 2010 kovo 19 07:03:03
Vietoje <-script-> visur yra </script>, tik kad tinyMCE truputi užpjauną. Vietoje to kad tiesiog į &lt;, &gt; perkoduotų. Anyway, ne esmė - manau suprasit.
Rašyti komentarą
Prisijunkite, norėdami parašyti komentarą.
Reitingai
Balsuoti gali tik nariai.

Prašome prisijungti arba prisiregistruoti.

Nėra reitingų.