Lua中实现两个JSON数据合并

Lua中实现两个JSON数据合并

Lua中实现两个JSON数据合并

在Lua中,有时需要合并两个JSON格式的table数据,将两个表合成一个表。

Code

--[[
	@author: 
	@date: 
	@note: 对比两个json的内容,并将jsonNew的值覆盖到jsonOld的值里面
	@param: jsonNew 修改后的json对象,table
	@param: jsonOld 修改前的json对象,table
	@param: isAddNull 是否把new当中有,但是old没有的值合并,true代表合并,false代表不合并,默认是true
	@return: jsonFinaly,modifyKeys jsonFinaly是两个合并后的值,modifyKeys是修改的键值对的键列表
--]]
function mergeJsonObj(jsonNew,jsonOld,isAddNull)
	if(nil == isAddNull)then
		isAddNull = true;
	end
	local modifyKeys = {};
	if(nil == jsonOld and isAddNull)then
		return jsonNew,{};
	elseif nil == jsonOld then
		return nil,{};
	elseif nil == jsonNew then
		return jsonOld,{};
	end
	for k,v in pairs(jsonNew)
	do
		if("table" == type(v) and nil ~= jsonOld[k] and v ~= jsonOld[k])then
			local tableGet,modifyKeysGet = mergeJsonObj(v, jsonOld[k], isAddNull);
			for kg,vg in pairs(modifyKeysGet)
			do
				table.insert(modifyKeys, tostring(k) .. "/" .. tostring(vg));
			end
			table.insert(modifyKeys, k);
		elseif(nil == jsonOld[k] and isAddNull)then
			table.insert(modifyKeys,k);
		elseif(nil ~= jsonOld[k] and v ~= jsonOld[k])then
			table.insert(modifyKeys,k);
		end
		if(k == modifyKeys[#modifyKeys])then
			jsonOld[k] = v;
		end
	end
	return jsonOld,modifyKeys;
end
  • 16
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值