未知
idlite的Python项目详细描述
IDLite是正在开发的项目。 无需预告,进行下位互换性的变更。
背景
IDLite,在Unity制作移动在线游戏时,用Unity C#将JSON 是解决使用麻烦的工具。
如果想使用硬的protocol,可以使用protocol buffer、thrift以及msgpack idl 这些不是为了高效地包装数据、{“键”:值}的结构, 因为对排列中的位置有使之有意义,比效率都Web系的休闲的开发风格 在重视的情况下有时很难使用。
JSON schema虽然也有,但是也是很复杂,很难学习。
LitJSON等,有可以轻松处理JSON的C#图书馆, 有反射和genelix有限制的iOS不动的情况。
IDLite是为了满足这个间隙的需求。
样本
IDL
// ドキュメントコメント // 複数行書けます. enumColor{red=1,green=2,blue=3};# 無視されるコメント // ボール classBall{// ボールの持ち主 string?owner;// ボールの色 enumColorcolor;// 座標 floatx;floaty;};classField{List<Ball>balls;};
生成的代码
// This code is automatically generated. // Don't edit this file directly. usingSystem;usingSystem.Collections.Generic;namespaceIDLite{/// <summary> /// ドキュメントコメント /// 複数行書けます. /// </summary> publicenumColor{red=1,green=2,blue=3}/// <summary> /// ボール /// </summary> [Serializable]publicpartialclassBall:IDLiteBase{/// <summary> /// ボールの持ち主 /// </summary> publicstringowner;/// <summary> /// ボールの色 /// </summary> publicColorcolor;/// <summary> /// 座標 /// </summary> publicdoublex;publicdoubley;publicBall(stringowner,Colorcolor,doublex,doubley){this.owner=owner;this.color=color;this.x=x;this.y=y;}publicBall(Dictionary<string,object>dict){this.owner=ParseNullableString(GetItem(dict,"owner"));this.color=(Color)ParseInt(GetItem(dict,"color"));this.x=ParseDouble(GetItem(dict,"x"));this.y=ParseDouble(GetItem(dict,"y"));}publicoverridestringToString(){return"Ball(owner="+owner+", color="+color+", x="+x+", y="+y+")";}} [Serializable]publicpartialclassField:IDLiteBase{publicList<Ball>balls;publicField(List<Ball>balls){this.balls=balls;}publicField(Dictionary<string,object>dict){this.balls=GetList<Ball>(dict,"balls",(objecto)=>{returnnewBall((Dictionary<string,object>)o);});}publicoverridestringToString(){return"Field(balls="+balls+")";}}}