示例#1
0
 protected abstract JsonElement GetValue(JsonElement context);
示例#2
0
 public JsonElement Run(JsonElement context, JsonElement value, Boolean file = false)
 {
     if (Next == null)
     {
         return JsonEncodeLastValue(context, value, file);
     }
     else
     {
         return JsonEncodeValue(context, value, file);
     }
 }
示例#3
0
            protected override JsonElement SetValue(JsonElement context, JsonElement value)
            {
                var array = context as JsonArray;

                if (array != null)
                {
                    array[Key] = value;
                }
                else
                {
                    context[Key.ToString()] = value;
                }

                return value;
            }
示例#4
0
 protected abstract JsonElement SetValue(JsonElement context, JsonElement value);
示例#5
0
            protected override JsonElement GetValue(JsonElement context)
            {
                var array = context as JsonArray;

                if (array == null)
                {
                    return context[Key.ToString()];
                }

                return array[Key];
            }
示例#6
0
 protected override JsonElement SetValue(JsonElement context, JsonElement value)
 {
     context[Key] = value;
     return value;
 }
示例#7
0
 protected override JsonElement GetValue(JsonElement context)
 {
     return context[Key];
 }
示例#8
0
        JsonElement JsonEncodeLastValue(JsonElement context, JsonElement value, Boolean file)
        {
            var currentValue = GetValue(context);

            //undefined
            if (currentValue == null)
            {
                if (Append)
                {
                    var arr = new JsonArray();
                    arr.Push(value);
                    value = arr;
                }

                SetValue(context, value);
            }
            else if (currentValue is JsonArray)
            {
                ((JsonArray)currentValue).Push(value);
            }
            else if (currentValue is JsonObject && !file)
            {
                var step = new ObjectStep(String.Empty);
                return step.JsonEncodeLastValue(currentValue, value, file: true);
            }
            else
            {
                var arr = new JsonArray();
                arr.Push(currentValue);
                arr.Push(value);
                SetValue(context, arr);
            }

            return context;
        }
示例#9
0
        JsonElement JsonEncodeValue(JsonElement context, JsonElement value, Boolean file)
        {
            var currentValue = GetValue(context);

            if (currentValue == null)
            {
                var newValue = Next.CreateElement();
                return SetValue(context, newValue);
            }
            else if (currentValue is JsonObject)
            {
                return currentValue;
            }
            else if (currentValue is JsonArray)
            {
                return SetValue(context, Next.ConvertArray((JsonArray)currentValue));
            }
            else
            {
                var obj = new JsonObject { [String.Empty] = currentValue };
                return SetValue(context, obj);
            }
        }