Monday, 9 February 2015

Update JArray in JObject JSON.NET



I have two files one is a json another is xml and I need to merge both, I decided to transform the xml in json after concat/merge.



{
"Level1": {
"Level2": [
{
"id": "Chart",
"Box": [
{
"id": "1",
"value": "10"
},
{
"id": "2",
"value": "20"
}
]
}
]
}
}


The second Json:



{
"Level1": {
"Level2": [
{
"id": "NameApp",
"Box": [
{
"id": "2",
"value": "90"
},
{
"id": "3",
"value": "50"
}
]
}
]
}
}


OUTPUT :



{
"Level1": {
"Level2": [
{
"id": "Chart",
"Box": [
{
"id": "1",
"value": "10"
},
{
"id": "2",
"value": "20"
}, {
"id": "2",
"value": "90"
},
{
"id": "3",
"value": "50"
}
]
}
]
}
}


XML code:



XmlDocument doc = new XmlDocument();

doc.Load(pathXml);
doc.RemoveChild(doc.FirstChild);

string jsonTextXml = JsonConvert.SerializeXmlNode(doc);


JSON code:



using (StreamReader readerJson = new StreamReader(pathJson))
{
jsonTextJson = readerJson.ReadToEnd();
}


Code for Merge:



JObject o1 = JObject.Parse(jsonTextJson);

JObject o2 = JObject.Parse(jsonTextXml);

JArray box1 = o1["Level1"]["Level2"]["Box"][0] as JArray;

JArray box2 = o2["Level1"]["Level2"]["Box"][0] as JArray;

box1 = new JArray(box1.Concat(box2));

o1["Level1"]["Level2"]["Box"][0].Replace(box1);


When I wannt get the box1, I have this error: Object reference not set to an object instance.


I tested with this another way..



JArray box1 = o1["Level1"]["Level2"][0]["Box"] as JArray;


What is wrong?


No comments:

Post a Comment