Ammetto la cosa è comoda, ma si ha poca elasticità, sono all'antica, se qualcosa mi serve, la studio e la implemento ( il tutto dipende sempre dai costi e dai tempi ) e aggiungerei anche che programmando sempre meno, ho sempre meno bisogno di inventarmi qualcosa.
MA LA MENTE VA ALLENATA SEMPRE... quindi avendo tempo e avendo la possibilità ritengo sempre un buon esercizio sprecare un po' del prezioso tempo in un implementazione.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Json.Test { class Program { static void Main(string[] args) { string json = "{\"name\":\"Fabio\";\"surname\":\"Arosio\";" + "\"age\":\"39\";\"friends\":{\"name\":\"Lorenzo\";" + "\"name\":\"Federico\"};\"date\":\"19740226\"}"; jHelper jH = new jHelper(json); Console.WriteLine(jH.XData); Console.ReadLine(); } } public class jHelper { private string _data; private string _xdata; public string Data { get {return _data;} set { _data = value.Trim(); _data = _data.TrimStart('{'); _data = _data.TrimEnd('}'); _data = _data.Replace("\"", ""); } } public string XData { get { return _xdata; } } public jHelper (string data) { Data = data; _xdata+="<?xml version=\"1.0\">"; Parse(); } private void Parse() { bool allDone = false; string iData = _data; while (! allDone ) { string cData =""; if (iData.IndexOf(";") > 0) { cData = iData.Substring(0, iData.IndexOf(";")); } else { cData = iData; } string pName =""; string pValue = ""; if (!cData.Contains("{")) { pName = cData.Split(':')[0]; pValue = cData.Split(':')[1]; AddData(pName, pValue); } else { cData = iData.Substring(0, iData.LastIndexOf("}")+1); pName = cData.Split(':')[0]; jHelper jx = new jHelper(cData.Substring(pName.Length+1)); pValue = jx.XData.Replace("<?xml version=\"1.0\">", ""); jx = null; AddData(pName, pValue); } iData = iData.Substring(iData.IndexOf(";") + 1); if (iData.IndexOf(";") == -1) { allDone = true; }; } if (iData.Length > 0) { AddData(iData.Split(':')[0], iData.Split(':')[1]); } } private void AddData(string name, string value) { _xdata += "<" + name + ">" + value + "</" + name + ">\r\n"; } } }
Posto che quanto realizzato si tratti di un esempio e del tutto causale, ho provato a giocare con un json non proprio base base.
Mi sono concesso di nidificargli un figlio complesso anche se non eccessivamente.
Morale ottengo il mio XML, che di contro è più semplice da manipolare e quanto meno è più vicino a C# ( e al framework ) di quanto non lo sia Json.
Nessun commento:
Posta un commento