jsonUpdate function
Map
jsonUpdate(
{ - required Map data,
- required Map newData,
})
Implementation
Map jsonUpdate({required Map data, required Map newData}) {
newData.forEach((key, value) {
if (value is Map) {
if (data.containsKey(key)) {
if (data[key] is Map) {
Map dataSub = {};
(data[key] as Map).forEach((keySub, valueSub) {
dataSub[keySub] = valueSub;
});
Map newDataSub = {};
(newData[key] as Map).forEach((keySub, valueSub) {
newDataSub[keySub] = valueSub;
});
data[key] = jsonUpdate(data: dataSub, newData: newDataSub);
} else {}
} else {
data[key] = value;
}
} else if (value is List) {
if (data.containsKey(key)) {
if (data[key] is List) {
List dataSubs = (data[key] as List);
List newDataSubs = (newData[key] as List);
if (dataSubs.first is Map) {
if (newDataSubs.first is Map) {
Map dataMap = {};
(dataSubs.first as Map).forEach((keySub, valueSub) {
dataMap[keySub] = valueSub;
});
Map newDataMap = {};
(newDataSubs.first as Map).forEach((keySub, valueSub) {
newDataMap[keySub] = valueSub;
});
dataMap = jsonUpdate(data: dataMap, newData: newDataMap);
dataSubs.map((e) {
if (e is Map) {
dataMap = jsonUpdate(data: dataMap, newData: e);
} else if (e is List) {
} else {}
});
newDataSubs.map((e) {
if (e is Map) {
dataMap = jsonUpdate(data: dataMap, newData: e);
} else if (e is List) {
} else {}
});
(data[key] as List)[0] = dataMap;
}
} else if ((data[key] as List).isEmpty) {
data[key] = newData[key];
}
} else {}
} else {
data[key] = value;
}
} else {
if (!data.containsKey(key)) {
data[key] = value;
}
}
});
return data;
}