วิธีการทำลูป JSONClass ของ SimpleJSON [Unity C#] by

31
Oct
1

หลังจากที่ได้รู้จักกับ JSONClass ใน Class SimpleJSON ซึ่งใช้ได้ค่อนข้างสะดวกกว่า Hashtable และ Dictionary มาก (แต่มีเงื่อนไขว่า Child ทั้งหมดเป็นได้แค่ String, Int, Float, Double, Boolean และตัวมันเอง) เนื่องจากสามารถเรียกค่าที่ซ้อนตัวมันเองได้ง่าย เช่น tempJsonClass["key"]["name"] ได้เลยซึ่งถ้าเก็บข้อมูลแบบนี้ไว้ใน Hashtable ล่ะก็ ต้องเรียก tempHashtable["key"] มาใส่ในอีก Hashtable ก่อนถึงจะเรียก key “name” ข้างในอีกทีออกมาได้ ซึ่งมีอย่างหนึงที่ SimpleJSON (จาก Link) ขาดไปคือการเรียก Keys เพื่อใช้ในการวนลูป (ซึ่งจรืงๆ SimpleJSON.cs ปกติมีฟังก์ชั่น GetEnumerator() ที่ Return Keys แต่ว่าเป็น IEnumerator ที่ต้องใช้ StartCouroutine()) เราเลยต้องเพิ่มโค๊ดส่วนหนึ่งเข้าไปใน Class SimpleJSON

เพิ่มโค๊ดด้านล่างนี้เข้าไปใน Class JSONClass ภายใน SimpleJSON.cs (Class อยู่ที่บรรทัด 696)

public Dictionary<string, JSONNode>.KeyCollection Keys{
  get { return m_Dict.Keys; }
}

แค่นี้เราก็สามารถเรียก Keys จาก JSONClass เพื่อมาใช้วน For Loop ได้แล้วล่ะครับ ตัวอย่างดังนี้

 

JSONClass tempJsonClass = SimpleJSON.JSON.Parse(result); //result เป็น String JSON ทั่วๆไป
foreach(string key in tempJsonClass .AsObject.Keys){ //ใช้ .AsObject.Keys เพื่อดึง Key ทั้งหมดได้เลย
  Debug.Log(key+":"+tempJsonClass[key]);
}

ง่ายๆเท่านี้แหละครับ

JSON Encode และ Decode ใน Flash Builder 4.6 by

30
Apr
0

สืบเนื่องจาก บทความนี้ ผมต้องการที่จะส่งข้อมูลจาก php มายัง flex ในรูปแบบ JSON แต่ว่าในกระทู้นี้จำเป็นต้องหาไฟล์ corelib.swc หรือ as3corelib.swc แล้ว import เข้ามาช่วยทำการ encode และ decode ข้อมูลที่ส่งมาจากไฟล์ php แต่สำหรับ Flash Builder 4.6 ที่ผมใช้อยู่นั้น ผมก็ได้ลองทำตามกระทู้นี้ทุกขั้นตอน แต่ก็ยังเกิด error message ตามนี้

1120: Access of undefined property JSON.

Can not resolve a multiname reference unambiguously. JSON (from C:\Program Files\Adobe\Adobe Flash Builder 4.6\sdks\4.6.0\frameworks\libs\player\11.1\playerglobal.swc(JSON, Walker)) and com.adobe.serialization.json:JSON (from C:\Users\shippo\Downloads\corelib.swc(com.adobe.serialization.json:JSON)) are available.

ทำให้ทราบว่า class JSON มันดันซ้ำกันระหว่างไฟล์ playerglobal.swc (ซึ่งมีมากับ Flash Builder 4.6) และ corelib.swc มันจึงรันไม่ได้ซักที ก็พยายามเสิร์ชหาใน Google จนได้ความว่าใน Flash Builder 4.6 นั้น การที่จะ Encode หรือ Decode ข้อมูลที่มาในรูปแบบ JSON สามารถทำเลยโดย

1. การ decode JSON

var aData:* = JSON.parse(e.result as String);

จากตัวอย่างข้างต้นเป็นการ decode JSON ใน Flash Builder 4.6 แทนการใช้ JSON.decode
2. การ encode JSON

var objStr:String = JSON.stringify( {name:”Todd Anderson”, company:”Infrared5″, phone:15558576309}, deflate );

จากตัวอย่างข้างต้นเป็นการ encode JSON ใน Flash Builder 4.6 แทนการใช้ JSON.encode
ซึ่งทั้ง JSON.parse และ JSON.stringify เป็นเมธอดที่มีอยู่แล้วในไฟล์ playerglobal.swc หากต้องการเพียงแค่ encode และ decode ข้อมูลรูปแบบ JSON เราไม่จำเป็นต้องใช้ corelib.swc หรือ as3corelib.swc ก็ได้

gzip ระหว่าง as3 + php by

30
Nov
0

อันนี้ก็มาจากการพยายามลดขนาดข้อมูลที่ต้องส่งไปมาระหว่าง Php กับ Flash ซึ่งเป็น Text ล้วนๆ ซึ่งก็ใหญ่ไม่ใช่เล่นเหมือนกัน

เลยพยายามลองใช้ gzip ที่มีติดอยู่กับ php เป็น default อยู่แล้ว

ประเด็นคือ gzip ของ php มี function เยอะมากมาย ประมาณ 3-4 แบบได้

ส่วน as3 ก็ไม่รู้ว่ามีหรือเปล่า ต้องหาอะไรเพิ่มมั้ย ก็เลยต้องศึกษาเพิ่มกันหน่อย

หลังจากวิจัยมาเกือบวัน ก็สรุปได้ผลตามนี้

 เราชนะรอบ 4 | ยืมเงิน 3000 ด่วน | แอพกู้เงิน | แอพเงินด่วน | สินเชื่อออนไลน์อนุมัติทันที | Site Map | กู้เงินก้อน | กระเป๋าตัง | thisshop และ ยืมเงินฉุกเฉิน 5000 ด่วน