| 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:reviverparametresine iletilen bağımsız değişken bir işlev olmadığında, ActionScriptkJSONInvalidReviverhata kimliğine sahip bir TypeError atar. Ayrıca, yerelleştirilmiş bir hata mesajı da gönderir. -
stringify()yöntemi:replacerparametresine iletilen bağımsız değişken bir dizi veya işlev olmadığında, ActionScriptkJSONInvalidReplacerhata kimliğine sahip bir TypeError atar. Ayrıca, yerelleştirilmiş bir hata mesajı da gönderir. -
stringify()yöntemi:spaceparametresi 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,kJSONCyclicStructurehata 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:
JSONExampleyapı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()öğesininreplaceriş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öntemininreviveriş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
Miras Alınan Genel Özellikleri Gizle
Miras Alınan Genel Özellikleri Göster