usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingNewtonsoft.Json.Linq;usingNewtonsoft.Json;namespaceJsonparse
{classProgram
{static void Main(string[] args)
{string json = @"[[
[{
'CPU': 'Intel',
'Drives': [
'DVD read/writer',
'500 gigabyte hard drive'
],
'Mouses': {
'one': '小米',
'two': '戴尔'
},
'type': 'computer'
},
{
'CPU': 'Test',
'Drives': [
'DVD read/writer',
'500 gigabyte hard drive'
],
'Mouses': {
'one': '小米',
'two': '戴尔',
'type': 'computer'
}
}
], {
'CPU': 'wss',
'Drives': [
'DVD read/writer',
'500 gigabyte hard drive'
],
'Mouses': {
'one': '小米',
'two': '戴尔',
'type': 'computer'
}
}
]]";string needCopy = @"{
'CPU ': 'Intel',
'Drives ': [
'DVD read/writer ',
'500 gigabyte hard drive'
],
'Mouses ': {
'one ': '小米',
'two ': '戴尔'
},
'type ': 'computer',
'sameAs ':[],
'Address':{
'one ': 'address1',
'two ': 'address ',
}
}";
JObject desJObject= newJObject();
CopyJObject(JObject.Parse(needCopy),refdesJObject);string desStr =JsonConvert.SerializeObject(desJObject);
JArray jArray=JArray.Parse(json);
IList list = new List();
GetJObject(jArray,reflist);foreach (var item inlist)
{
Console.WriteLine(JsonConvert.SerializeObject(item));
};
Console.ReadKey();
}public static void GetJObject(JArray jArray, ref IListlist)
{foreach (var item injArray)
{if (item isJObject)
list.Add((JObject)item);if (item isJArray)
GetJObject((JArray)item,reflist);
}
}public static void CopyJObject(JObject orgJObject, refJObject desJObject)
{foreach (var pro inorgJObject)
{if (pro.Value == null)continue;if (pro.Value isJObject)
{
JObject des= newJObject();
desJObject[pro.Key.Trim()]=des;
CopyJObject((JObject)pro.Value,refdes);
}if (pro.Value isJValue)
{if (string.IsNullOrEmpty((string)pro.Value)) continue;
desJObject.Add(pro.Key.Trim(), pro.Value.ToString().Trim());
}if (pro.Value isJArray)
{
JArray array= newJArray();foreach (var item in(JArray)pro.Value)
{if (item isJObject)
{
JObject des= newJObject();
CopyJObject((JObject)item,refdes);
array.Add(des);
}if (item isJValue)
{
array.Add(item.ToString());
}
}if (array.Count != 0)
desJObject.Add(pro.Key.Trim(), array);
}
}
}
}
}