String.isJson()

2009.12.01. 22:58 stack

Egy string-ről legkönnyebben úgy tudjuk megállapítani, hogy JSON vagy sem, hogy megpróbáljuk átalakítani. Ha sikerült, akkor az, ellenkező esetben pedig nem, ilyen egyszerű. :)

Ext.override(String, {
    isJson: function () {
        try {
            Ext.decode(this);
            return true;
        } catch(e) {
            return false;
        }
    }
});

Szólj hozzá!

Címkék: string json override

Store.toJson()

2009.11.26. 23:20 stack

Store teljes tartalma JSON alakban:

Ext.override(Ext.data.Store, {
    toJson: function () {
        var items = [];
        this.each(function (record) {
            items.push(Ext.encode(record.data));
        });
        return '[' + items.join(',') + ']';
    }
});

Szólj hozzá!

Címkék: store json override

Native JSON

2009.10.03. 23:52 stack

A JSON formátum ellen a leggyakoribb kritika az eval miatti sebezhetőség. Én ezt túllihegett problémának érzem. De kétségtelen, hogy előfordulhat olyan példa, amikor kellemetlen következménye lehet a JSON értelmezés közben alkalmazott eval használatának. (bár ilyen eseteknél nem az eval az egyedüli probléma) Talán emiatt is lehetett, hogy nemrégibben több böngészőgyártó a JavaScript-hez hozzáadta az un. natív JSON kiegészítést. Így már az eval helyett használhatja az ember a beépített JSON elemzőt.

Amiért ez számomra érdekes volt, hogy meglepően gyorsabb az eval-nál.

Szólj hozzá!

Címkék: json eval

JSON + [undefined]

2009.09.16. 19:01 stack

Nagyon közhely: rossz kódban, rossz hibák vannak, és rossz azokat keresni! :)

PHP-ban valamiért összekeveredik a lista és az asszociatív tömb, talán emiatt is sokszor JavaScriptben is találni olyan példákat, hogy egy elem tulajdonságai nem Object-ben, hanem Array-ban vannak. (előre meghatározott sorrendben). Azontúl, hogy nagyon kerülendő ez a megoldás, még komoly hibaforrás is lehet, ha valamelyik tulajdonság undefined is lehet, majd mindezt valamiért JSON-nal el akarnánk kódolni.

var a = [undefined, 'Hello világ!', 100];
var b = Ext.util.JSON.decode(Ext.util.JSON.encode(a));
alert('a: ' + a.length + '; b: ' + b.length);

Eredmény: "a: 3; b:2". és ugye azt mondani sem kell, hogy az indexek eggyel elcsúsztak... Meg lehetne hack-elni az encode-t, hogy készüljön fel erre az extrém esetre, de jobb inkább ezt az egészet elkerülni...

Szólj hozzá!

Címkék: array json undefined

JSON viewer

2009.07.23. 12:03 stack

Általában mindenkinek azt szoktam ajánlani, hogyha teheti, akkor XML helyett JSON-nal kommunikáljon. Gyorsabb, könnyebb kezelni, rövidebb adat, típusosabb stb. Persze azért vannak hátrányai is… de ugye valamit valamiért. :)

Annyiból mindenképpen macerássabb, hogy a böngésző alapértelmezetten nem tudja szépen, átláthatóan megjeleníteni, ahogy az XML-t. Külső programok vannak erre, de némelyikhez még külön dll-t is fel kell pakolni a gépre. Nem olyan régen elkészítettem magamnak az egyik ilyen program online változatát, hogy kényelmesen mindenhol elérhessem.

7 komment

Címkék: json viewer

ExtJS blog, mi ez?

Az ExtJS egy JavaScript keretrendszer, melyet a blog írója elfogultan a legjobbnak tart, és ez a blog olyan apróságok gyűjteménye, melyek ExtJS használata közben felmerültek, eszébe jutottak...

Címkék

ajax (2) alignto (1) analytics (1) anchorto (1) array (7) auto (1) back button (1) beautifier (1) benchmark (1) button (1) capture (1) case sensitive (1) center (1) change (1) class (2) closure compiler (1) combobox (3) comment (1) contextmenu (2) core (1) count (1) css (8) dataview (1) date (1) datefield (1) dragdrop (1) easing (1) eclipse (1) element (1) eval (2) event (1) field (2) filter (1) firefox extension (2) focus (2) function (1) google (2) grid (3) group contact (1) header (2) height (2) hidden (1) hirek (1) history (1) htaccess (1) https (1) icon (3) id (1) ie6 (1) iframe (2) image (1) indexof (1) jslint (1) jsmin (1) json (5) keymap (1) kipróbálom (2) label (1) layout (1) magyar (1) mask (1) math (1) maxlength (1) mysql (5) napi szívás (7) nem extjs (10) node (1) off (3) override (15) pagesize (1) pagining (1) panel (2) php (3) plugin (1) pozicionálás (2) preload (1) print (1) propertygrid (1) readonly (2) record (1) replace (1) scale (1) shuffle (1) sort (2) sortable (1) store (2) string (5) sum (1) tabchange (1) tabpanel (1) template (1) textfield (1) textitem (1) timer (1) toolbar (5) tools (1) total count (1) tree (1) treenode (1) truncate (1) ucfirst (1) undefined (1) unique (1) urlencode (1) utf8 (1) viewer (1) viewport (2) window (1) zindex (1)