public void Accumulate(SqlString Key, SqlJson Value, SqlByte MergeFlag)
 {
     if (!_mergeOptionPassed)
     {
         _mergeOption       = (JsonObjectMergeConflictOption)MergeFlag.Value;
         _mergeOptionPassed = true;
     }
     _value.Add(new JsonString(Key.ToString()), Value._value, _mergeOption);
 }
 public void Read(BinaryReader r)
 {
     _mergeOption       = (JsonObjectMergeConflictOption)r.ReadByte();
     _mergeOptionPassed = r.ReadBoolean();
     _value             = (JsonObject)JsonObject.Parse(r.ReadString());
     if (_value == null)
     {
         _value = new JsonObject();
     }
 }
示例#3
0
        public void Merge(JsonObject obj, JsonObjectMergeConflictOption option)
        {
            foreach (var p in obj._values)
            {
                if (_values.ContainsKey(p.Key))
                {
                    switch (option)
                    {
                    case JsonObjectMergeConflictOption.TakeRemote:
                        _values[p.Key] = p.Value;
                        break;

                    case JsonObjectMergeConflictOption.MergeArray:
                        if (p.Value is JsonArray && _values[p.Key] is JsonArray)
                        {
                            (_values[p.Key] as JsonArray).Add(p.Value as JsonArray);
                        }
                        else if (p.Value is JsonArray)
                        {
                            JsonArray newArray = new JsonArray();
                            newArray.Add(_values[p.Key]);
                            newArray.Add(p.Value as JsonArray);
                            _values[p.Key] = newArray;
                        }
                        else if (_values[p.Key] is JsonArray)
                        {
                            (_values[p.Key] as JsonArray).Add(p.Value as JsonArray);
                        }
                        else
                        {
                            JsonArray newArray = new JsonArray();
                            newArray.Add(_values[p.Key]);
                            newArray.Add(p.Value);
                        }
                        break;
                    }
                }
                else
                {
                    _values.Add(p.Key, p.Value);
                }
            }
        }
示例#4
0
        public void Add(JsonString key, JsonValue value, JsonObjectMergeConflictOption mergeOption = JsonObjectMergeConflictOption.TakeRemote)
        {
            if (_values.ContainsKey(key))
            {
                switch (mergeOption)
                {
                case JsonObjectMergeConflictOption.TakeRemote:
                    _values[key] = value;
                    break;

                case JsonObjectMergeConflictOption.MergeArray:
                    if (_values[key] is JsonArray)
                    {
                        (_values[key] as JsonArray).Add(value);
                    }
                    else
                    {
                        JsonArray newArray = new JsonArray();
                        newArray.Add(_values[key]);
                        if (value is JsonArray)
                        {
                            newArray.Add(value as JsonArray);
                        }
                        else
                        {
                            newArray.Add(value);
                        }
                        _values[key] = newArray;
                    }
                    break;
                }
            }
            else
            {
                _values.Add(key, value);
            }
        }
 public void Init()
 {
     _value             = new JsonObject();
     _mergeOption       = JsonObjectMergeConflictOption.MergeArray;
     _mergeOptionPassed = false;
 }