Delphi中使用JSON作為數據格式的應用場景越來越廣泛,而合并JSON數據也是開發中常見的需求。下面介紹一種比較簡單的JSON合并方法:
function MergeJson(AJson1, AJson2: TJSONObject): TJSONObject;
var
I: Integer;
Pair: TJSONPair;
begin
Result := TJSONObject.Create;
for I := 0 to AJson1.Count - 1 do
begin
Pair := AJson1.Pairs[I];
Result.AddPair(Pair.JsonString.Value, Pair.JsonValue.Clone);
end;
for I := 0 to AJson2.Count - 1 do
begin
Pair := AJson2.Pairs[I];
if Result.IndexOfName(Pair.JsonString.Value) = -1 then
Result.AddPair(Pair.JsonString.Value, Pair.JsonValue.Clone);
end;
end;
以上代碼定義了一個名為MergeJson的函數,該函數接受兩個TJSONObject類型的參數,分別代表需要合并的JSON數據。函數中首先創建一個新的TJSONObject對象,作為最終合并結果。
接下來使用循環遍歷第一個JSON對象(AJson1),將其中每一對鍵值對都添加到新的JSON對象中。需要注意的是,這里通過調用Clone方法復制了原鍵值對中的值,而不是直接將原始對象引用賦值給新的對象,以確保合并后的結果不會受到原JSON數據的修改影響。
最后再次循環遍歷第二個JSON對象(AJson2),將其中鍵值對添加到新的JSON對象中,但是要先判斷新的JSON對象中是否已經存在了相同的鍵名,如果已經存在,則跳過該鍵值對的添加。
通過以上代碼實現,就可以比較簡單地實現JSON合并功能了。需要注意的時,這種合并方法并不支持合并數組類型的JSON數據,也不支持多層嵌套JSON數據的合并。