使用出色的JSON.NET库,这非常容易。此方法将对象与具有字符串,数字或对象的属性组合在一起。
public static string Cascade(params string[] jsonArray){ JObject result = new JObject(); foreach (string json in jsonArray) { JObject parsed = JObject.Parse(json); foreach (var property in parsed) result[property.Key] = property.Value; } return result.ToString();}结果,给出您的示例:
{ "firstName": "Albert", "lastName": "Smith", "phone": "12345"}根据您更新的问题进行编辑:
通过将该解决方案调整为递归工作,可以合并子对象。下面的示例将符合您的预期结果(数组除外)。您将能够
JArray以类似于合并对象(
JObject)的方式轻松扩展此解决方案以合并数组()。
public static string Cascade(params string[] jsonArray){ JObject result = new JObject(); foreach (string json in jsonArray) { JObject parsed = JObject.Parse(json); Merge(result, parsed); } return result.ToString();}private static void Merge(JObject receiver, JObject donor){ foreach (var property in donor) { JObject receiverValue = receiver[property.Key] as JObject; JObject donorValue = property.Value as JObject; if (receiverValue != null && donorValue != null) Merge(receiverValue, donorValue); else receiver[property.Key] = property.Value; }}


