Com.Aote.ObjectTools.GeneralObject.FromJson C# (CSharp) Method

FromJson() public method

由Json串给对象赋值,将递归进行调用,碰到JsonArray自动把JsonArray转换成ObjectList。 碰到JsonObject,自动转换成GeneralOject。
public FromJson ( System.Json.JsonObject item ) : void
item System.Json.JsonObject 从这个json对象给对象属性赋值
return void
        public void FromJson(JsonObject item)
        {
            //通过获取类型,给_ctype赋值
            this.NewGetType();

            //如果有实体类型,则设置实体类型
            if (item.ContainsKey("EntityType"))
            {
                EntityType = item["EntityType"];
                item.Remove("EntityType");
            }
            foreach (string key in item.Keys)
            {
                object value = item[key];
                Log.Debug("from json name=" + this.Name);
                if (key.Equals("id"))
                {
                    Log.Debug("from json id=" + value);
                }
                //如果是数组,对数组中的每一个对象调用转换过程
                if (value is JsonArray)
                {
                    //数组转换成对象列表
                    ObjectList ol = new ObjectList();
                    ol.FromJson(value as JsonArray);
                    SetCollectionProperty(key, ol);
                }
                else if (value is JsonObject)
                {
                    //JsonObject转换成一般对象
                    GeneralObject go = new GeneralObject();
                    go.FromJson(value as JsonObject);
                    SetPropertyValue(key, go, true);
                }
                else if (value is JsonPrimitive)
                {
                    this.NewGetType().GetProperty(key).SetValue(this, value as JsonPrimitive, null);
                }
                else if (value == null)
                {
                    SetPropertyValue(key, null, true);
                }
                else 
                {
                    throw new Exception("类型错误");
                }
            }
            //新加载的对象为未修改
            IsModified = false;
        }

Usage Example

Example #1
0
 void ReadCard_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
 {
     IsBusy = false;
     //通讯错误
     if (e.Error != null)
     {
         Error = "通讯错误:" + e.Error.Message;
         State = State.LoadError;
     }
     else
     {
         //更新数据
         JsonObject    item = JsonValue.Parse(e.Result) as JsonObject;
         GeneralObject go   = new GeneralObject();
         go.FromJson(item);
         string exception = (string)go.GetPropertyValue("Exception");
         string err       = (string)go.GetPropertyValue("Err");
         //如果后台有异常
         if (exception != null)
         {
             Error = "系统异常:" + exception;
             State = State.LoadError;
         }
         //读卡错误
         else if (err != null)
         {
             Error = "读卡错误:" + err;
             State = State.LoadError;
         }
         else
         {
             //获取卡上内容
             Factory  = (string)go.GetPropertyValue("Factory");
             CardId   = (string)go.GetPropertyValue("CardID");
             Gas      = double.Parse(go.GetPropertyValue("Gas").ToString());
             Money    = double.Parse(go.GetPropertyValue("Money").ToString());
             BuyTimes = int.Parse(go.GetPropertyValue("Times").ToString());
             Bkcs     = int.Parse(go.GetPropertyValue("RenewTimes").ToString());
             Dqdm     = (string)go.GetPropertyValue("Dqdm");
             State    = State.Loaded;
         }
     }
     //通知读卡完成
     OnReadCompleted(null);
 }
All Usage Examples Of Com.Aote.ObjectTools.GeneralObject::FromJson