Paket | Üst Düzey |
Sınıf | public final class JSON |
Miras Alma | JSON Object |
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 11, AIR 3.0 |
Kural olarak, ActionScript JSON sınıfı, ECMA-262 belirtimine uygundur. ActionScript'in ECMAScript'ten daha fazla esneklik sağladığında aşağıdaki istisnalar görülmektedir:
-
ECMAScript'in aksine, ActionScript JSON sınıfı aşağıdaki temel veri türlerinin yanı sıra bunları saran nesneleri de kodlar:
Temel tür Wrapper sınıfı dize String sayı Number boolean Boolean -
parse()
yöntemi:reviver
parametresine iletilen bağımsız değişken bir işlev olmadığında, ActionScriptkJSONInvalidReviver
hata kimliğine sahip bir TypeError atar. Ayrıca, yerelleştirilmiş bir hata mesajı da gönderir. -
stringify()
yöntemi:replacer
parametresine iletilen bağımsız değişken bir dizi veya işlev olmadığında, ActionScriptkJSONInvalidReplacer
hata kimliğine sahip bir TypeError atar. Ayrıca, yerelleştirilmiş bir hata mesajı da gönderir. -
stringify()
yöntemi:space
parametresi bir String veya Number olmadığında, String öğesine dönüştürülür. Dize, çıktıdaki aralık olarak görev yapar. ECMA-262, aralığın boş dize olmasını gerektirir. -
stringify()
yöntemi: Kod döngüsel bir yapıyla karşılaştığında,kJSONCyclicStructure
hata kimliğine sahip bir TypeError atar. Ayrıca, yerelleştirilmiş bir hata mesajı da gönderir. -
ECMA-262, JSON dizeleştirmesinin bir nesnenin "kendi özelliklerini", başka bir deyişle nesnenin dinamik özelliklerini numaralandırdığını belirtir. ActionScript sınıfları sabit özellikler de bildirebildiklerinden, ActionScript
stringify()
yöntemi ActionScript nesnelerinde hem dinamik özellikleri hem de genel geçici olmayan özellikleri numaralandırır. Bu özellikler arasında, alıcılar tarafından erişilen özelliklerin yanı sıra doğrudan erişilen özellikler de yer alır.
Çoğu ActionScript sınıfı için ActionScript JSON.stringify()
yöntemi varsayılan bir kodlama oluşturur. ActionScript sınıfları, sınıfta veya prototipinde bir toJSON()
yöntemi tanımlayarak bu kodlamayı değiştirebilir. Bazı ActionScript sınıfları için varsayılan JSON kodlaması uygun değildir. Bu sınıflar toJSON()
yönteminin aşağıdaki tabloda açıklanan değeri döndüren önemsiz ve geçersiz kılınabilir bir uygulamasını sağlar. Belirli bir davranışa gerek duyuyorsanız, bu sınıflarda toJSON()
yöntemlerini geçersiz kılabilir veya yeniden tanımlayabilirsiniz. Aşağıdaki tabloda bu istisnalar açıklanmaktadır:
Class | Yorumlar |
---|---|
ByteArray | Geçersiz kılınabilir toJSON() yöntemi, "ByteArray" dizesini döndürür. |
Dictionary | Geçersiz kılınabilir toJSON() yöntemi, "Dictionary" dizesini döndürür. |
Date | Geçersiz kılınabilir toJSON() yöntemi, Date.toString() dizesini döndürür. Bu istisna, ActionScript Date yapıcısının JSON dizesini ayrıştırabileceğini garanti eder. |
XML | Geçersiz kılınabilir toJSON() yöntemi "XML" dizesini döndürür. |
Yöntem | Tanımlayan: | ||
---|---|---|---|
Bir nesnenin belirli bir özelliğinin tanımlı olup olmadığını gösterir. | Object | ||
Object sınıfının bir örneğinin parametre olarak belirtilen nesnenin prototip zincirinde olup olmadığını gösterir. | Object | ||
[statik]
JSON formatlı bir Dizeyi kabul eder ve bu değeri temsil eden bir ActionScript nesnesi döndürür. | JSON | ||
Belirtilen özelliğin bulunup bulunmadığını ve numaralandırılabilir olup olmadığını gösterir. | Object | ||
Dinamik bir özelliğin döngü işlemlerinde kullanılabilirliğini ayarlar. | Object | ||
[statik]
Bir ActionScript değerini temsil eden bir String öğesini JSON formatında döndürür. | JSON | ||
Bu nesnenin, yerel ayara özel kurallara göre biçimlendirilmiş dize temsilini döndürür. | Object | ||
Belirtilen nesnenin dize olarak temsil edilen halini döndürür. | Object | ||
Belirtilen nesnenin temel değerini döndürür. | Object |
parse | () | yöntem |
public static function parse(text:String, reviver:Function = null):Object
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 11, AIR 3.0 |
JSON formatlı bir Dizeyi kabul eder ve bu değeri temsil eden bir ActionScript nesnesi döndürür. JSON nesneleri, dizileri, dizeleri, sayıları, Boolean öğeleri ve null öğeleri, aşağıda gösterilen ilgili ActionScript değerlerine eşlenir:
JSON türü | ActionScript türü |
---|---|
dizi | Array |
dize | String |
sayı | Number |
boolean | Boolean |
null | null |
reviver
parametresi, iki parametre alan bir işlevdir: bir tuş ve bir değer. Bu işlevi, her bir tuş/değer çiftini ayrıştırıldığında dönüştürmek veya filtrelemek için kullanabilirsiniz. Bir reviver
işlevi sağlamanız durumunda, parse()
işlevi çıktısında varsayılan ayrıştırma yerine, her bir çift için dönüştürülen veya filtrelenen değeriniz döndürülür. reviver
işlevi herhangi bir çift için undefined
döndürürse, özellik nihai sonuçtan silinir.
reviver
parametresine iletilen bağımsız değişken bir işlev olmadığında, ActionScript kJSONInvalidReviver
hata kimliğine sahip bir TypeError atar. Ayrıca, yerelleştirilmiş bir hata mesajı da gönderir.
parse()
işlevi bir nesne içinde kopya tuşlarla karşılaşırsa, son karşılaşılan kopya tuş, söz konusu tuşun tüm önceki örneklerine yönelik değeri sağlar.
Parametreler
text:String — Ayrıştırılacak JSON dizesi
| |
reviver:Function (default = null ) — (İsteğe bağlı) Ayrıştırılacan her bir tuş/değer çiftini dönüştüren bir işlev.
|
Object |
stringify | () | yöntem |
public static function stringify(value:Object, replacer:* = null, space:* = null):String
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 11, AIR 3.0 |
Bir ActionScript değerini temsil eden bir String öğesini JSON formatında döndürür. stringify
yöntemi üç parametre alabilir.
value
parametresi gerekir. Bu parametre bir ActionScript değeridir. Genellikle bu bir Object veya Array öğesidir, ancak bir String, Boolean, Number veya null öğesi de olabilir.
İsteğe bağlı replacer
parametresi bir işlev veya bir dize ya da sayı dizisi olabilir. Bu bir işlevse, işlev iki parametre alır: bir tuş ve bir değer. Bu işlevi, her bir tuş/değer çiftini ayrıştırıldığında dönüştürmek veya filtrelemek için kullanabilirsiniz. Bir replacer
işlevi sağlamanız durumunda, parse()
işlevi çıktısında varsayılan ayrıştırma yerine, her bir çift için dönüştürülen veya filtrelenen değeriniz döndürülür. replacer
işlevi herhangi bir çift için undefined
döndürürse, özellik nihai sonuçtan silinir. replacer
bir diziyse, hangi özelliklerin çıktıya dahil edileceğini belirlemek için bir filtre olarak kullanılır.
replacer
parametresine iletilen bağımsız değişken bir sizi veya işlev değilse, ActionScript kJSONInvalidReplacer
hata kimliğine sahip bir TypeError atar. Ayrıca, yerelleştirilmiş bir hata mesajı da gönderir.
İsteğe bağlı space
parametresi, okunabilirliği kolaylaştırmak amacıyla beyaz boşluğun döndürülen dizeye eklenmesine olanak tanıyan bir String veya Number öğesidir. Oluşturulan JSON nesnelerinde ve dizilerindeki girişler, space
parametresinden türetilen bir boşlukla ayrılır. Bu aralık her zaman 0 ila 10 karakter genişliğindedir. Boşluk bir dize ise, türetilen aralık bu dizenin ilk on karakteridir. Boşluk negatif olmayan sayı x ise, aralık en fazla on boşluk olmak üzere x boşluk karakteri uzunluğundadır. space
parametresine iletilen bağımsız değişken bir String veya Number değilse, çıktıdaki aralık olarak kullanılmak üzere bir String öğesine dönüştürülür. Ardından çalıştırma işlemi devam eder.
stringify()
yöntemi döngüsel bir yapıyla karşılaştığında, kJSONCyclicStructure
hata kimliğine sahip bir TypeError atar. Ayrıca, yerelleştirilmiş bir hata mesajı da gönderir.
Parametreler
value:Object — JSON dizesine dönüştürülecek olan ActionScript değeri
| |
replacer:* (default = null ) — (İsteğe bağlı) stringify çıktısında tuş/değer çiftlerini dönüştüren veya filtreleyen bir işlev veya dizi.
| |
space:* (default = null ) — (İsteğe bağlı) Döndürülen String öğesinde eklenmiş beyaz boşluğu denetleyen bir dize veya sayı.
|
String |
JSONExample
sınıfını kullanır. Bu işlem, aşağıdaki adımlar uygulanarak gerçekleştirilir:
JSONExample
yapıcısı, üst sınıfıntext
üyesine bir dize atar ve dahili bir sayaç başlatır.- Ayrıca sınıf, JSON'a dışa aktarılmış JSONExample nesnelerini içeren bir diziyi tanımlar.
- JSONExample,
toJSON()
yöntemini verevive()
yöntemini de tanımlar.toJSON()
yöntemi, JSONExample nesnelerini JSON'a serileştirmek üzereJSON.stringify()
öğesi tarafından çağrılır.revive()
yöntemi, JSONExample nesnesinin tamamını geri yüklemek içinJSON.parse()
yöntemlerinden çağrılabilir. Bu geri yükleme işlemi, orijinal nesnenin yeniden oluşturulabilir nesneler dizisinden alınması için belirtilen bir kimliğin kullanımıyla gerçekleştirilir. - Sınıf tanımını kullanan komut dosyası, iki TextField nesnesi ve bir JSONExample nesnesi içeren bir nesne oluşturur. Ayrıca JSON'a dışa aktarılmış TextField nesnelerinin depolanması için yeniden oluşturulabilir bir nesneler dizisi oluşturur.
JSON.stringify()
öğesininreplacer
işlevi TextField nesnelerini JSON dizesi dışında filtreler.replacer
, kaldırılan her bir nesne yerine daha sonra nesneyi almak için kullanılabilecek bir kimliğe sahip işaretleyici sağlar. Bunun yanı sıra, JSONExample nesneleri kendi yerel JSON kodlamalarına göre geçiş yapar.parse()
yöntemininreviver
işlevi, başvurulan tüm TextField ve JSONExample nesnelerini alarak orijinal nesneyi yeniden oluşturur.
package { import flash.text.TextField; public class JSONExample extends TextField { static var nextId = 10000; static var revivable_objects:Array = []; public var id; public function JSONExample(s:String){ super.text = s; id = ++nextId; } public function toJSON(k):* { // To be called internally by the JSON.stringify() method. // Save the original object internally. // Write out only a generated ID and the text value. revivable_objects[id] = this; return {"classJSONExample":{"reviveId":id,"contents":this.text}}; } public static function revive(id:int):JSONExample { // For explicit use in the JSON.parse() method. // Revives the object using the ID obtained from the JSON string. return revivable_objects[id]; } } } import flash.text.TextField; var lastId = 20000; var tf1:TextField = new TextField(); tf1.text = "Lorem ipsum"; var tf2:TextField = new TextField(); tf2.text = "Laughing cows"; var nt:JSONExample = new JSONExample("It was the best of times; it was the worst of times."); var obj:Object = {a:tf1, b:nt, c:tf2}; var revivable_objects:Array = new Array(); var json_out = JSON.stringify(obj, function(k,v){ if (v is JSONExample) { // Send JSONExample objects to the JSON output. // Note that stringify() calls JSONExample.toJSON() to serialize this object. return v; } if (v is TextField) { // Remove TextField objects from the JSON output. // Save the original object for reviving later. // Return a new object containing an identification marker // and the original object's revival ID. revivable_objects[++lastId] = v; return {"classTextField":{"reviveId":lastId}}; } return v; } ); trace("json_out: " + json_out); var json_in = JSON.parse(json_out, function(k,v) { if ("classTextField" in v) { // special marker tag from stringify() replacer code // Retrieve the original object based on the ID stored in the stringify() replacer function. var id = v["classTextField"].reviveId; return revivable_objects[id]; } else if ("classJSONExample" in v){ // Retrieve the original object based on the ID generated in JSONExample.toJSON(). return JSONExample.revive(v["classJSONExample"].reviveId); } return v; } ); if (json_in.a) { if (json_in.a.hasOwnProperty("text")) { trace("json_in.a: " + json_in.a.text); } } if (json_in.b) { if (json_in.b.hasOwnProperty("text")) { trace("json_in.b: " + json_in.b.text); } } if (json_in.c) { if (json_in.c.hasOwnProperty("text")) { trace("json_in.c: " + json_in.c.text); } }
Tue Jun 12 2018, 01:09 PM Z