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(); } }
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); } } }
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; }