Example #1
0
        static LuaTable JsonArray2LuaTable(JArray json_arr)
        {
            var curLuaTable = new LuaTable();

            //往luaTable里面扔有序数组
            foreach (var item in json_arr)
            {
                //检查子项类型

                switch (item.Type)
                {
                case JTokenType.Boolean:
                    curLuaTable.AddItem((bool)item);
                    break;

                case JTokenType.Array:
                    curLuaTable.AddItem(JsonArray2LuaTable(item.ToObject <JArray>()));
                    break;

                case JTokenType.String:
                    curLuaTable.AddItem((string)item);
                    break;

                case JTokenType.Object:
                    curLuaTable.AddItem(JsonObject2LuaTable(item.ToObject <JObject>()));
                    break;

                case JTokenType.Date:
                    curLuaTable.AddItem((string)item);
                    break;

                case JTokenType.Float:
                    curLuaTable.AddItem((float)item);
                    break;

                case JTokenType.Integer:
                    curLuaTable.AddItem((int)item);
                    break;

                case JTokenType.None:
                    curLuaTable.AddItemNil();
                    break;

                case JTokenType.Null:
                    curLuaTable.AddItemNil();
                    break;

                case JTokenType.TimeSpan:
                    curLuaTable.AddItem((float)item);
                    break;
                }
            }

            return(curLuaTable);
        }
Example #2
0
        /// <summary>
        /// 递归方法
        /// </summary>
        static LuaTable JsonObject2LuaTable(JObject jsonObj)
        {
            var curLuaTable = new LuaTable();

            if (jsonObj.Type == JTokenType.Array)
            {
                return(JsonArray2LuaTable(jsonObj.ToObject <JArray>()));
            }
            else if (jsonObj.Type == JTokenType.Object)
            {
                //无序
                foreach (var item in jsonObj)
                {
                    switch (item.Value.Type)
                    {
                    case JTokenType.Boolean:
                        curLuaTable.AddItem(item.Key, (bool)item.Value);
                        break;

                    case JTokenType.Array:
                        curLuaTable.AddItem(item.Key, JsonArray2LuaTable(item.Value.ToObject <JArray>()));
                        break;

                    case JTokenType.String:
                        curLuaTable.AddItem(item.Key, (string)item.Value);
                        break;

                    case JTokenType.Date:     //转成string
                        curLuaTable.AddItem(item.Key, (string)item.Value);
                        break;

                    case JTokenType.Float:
                        curLuaTable.AddItem(item.Key, (float)item.Value);
                        break;

                    case JTokenType.Integer:
                        curLuaTable.AddItem(item.Key, (int)item.Value);
                        break;

                    case JTokenType.None:
                        curLuaTable.AddItemNil(item.Key);
                        break;

                    case JTokenType.Null:
                        curLuaTable.AddItemNil(item.Key);
                        break;

                    case JTokenType.Object:
                        curLuaTable.AddItem(item.Key, JsonObject2LuaTable(item.Value.ToObject <JObject>()));
                        break;

                    case JTokenType.TimeSpan:
                        curLuaTable.AddItem(item.Key, (float)item.Value);
                        break;
                    }
                }
            }


            return(curLuaTable);
        }