CSharp:JSON
From Aino Wiki
Contents
Librerie
NewtonSoft
Doc e Info Qui o scaricabile mediante NuGet
Serializzare \ Deserializzare
Dopo aver installato la libreria quindi aggiunta la reference 'Newtonsoft.Json'.
Data la classe:
namespace EAI.WCF.Wrapper.Model
{
[DataContract]
public class PollingModel
{
[DataMember]
public Guid RecordGuid { get; set; }
[DataMember]
public Record RecordType { get; set; }
}
[DataContract]
public class Record
{
[DataMember]
public string TableName { get; set; }
[DataMember]
public Dictionary<string, string> KeyFields { get; set; } //= new Dictionary<string, string>();
public Record() {
KeyFields = new Dictionary<string, string>();
}
}
}
Serializzazione
using Newtonsoft.Json;
// ...
private void LogSoapMessagePayload(PollingModel model)
{
try
{
if (bool.Parse(ConfigurationManager.AppSettings["BufferServiceLogEnabled"]))
{
string serializedModel = JsonConvert.SerializeObject(model, Formatting.Indented);
Logger.Info(string.Format("INPUT FLOW -> BufferService, JSON: \r\n\"{0}\"", serializedModel));
}
}
catch (Exception ex)
{
Logger.ErrorFormat("[BufferService.svc.cs].LogSoapMessagePayload: {0}", ex.Message);
}
}
Deserializzazione
es 1. Classe
[DataContract]
[Serializable]
public class ItemMasterData
{
[DataMember(IsRequired = true)]
public string divisionCode { get; set; }
[DataMember(IsRequired = true)]
public string companyCode { get; set; }
[DataMember(IsRequired = true)]
public string productCode { get; set; }
[DataMember(IsRequired = true)]
public productDescription productDescription { get; set; }
[DataMember(IsRequired = true)]
public Properties Properties { get; set; }
[DataMember(IsRequired = true)]
public ClassDescription ClassDescription { get; set; }
[DataMember(IsRequired = true)]
public SubclassDescription SubclassDescription { get; set; }
[DataMember]
public string catalogueItemCode { get; set; }
[DataMember]
public string statusCode { get; set; }
// ... etc
}
Metodo:
private void LogSoapMessagePayload(ItemMasterData model)
{
try
{
if (bool.Parse(ConfigurationManager.AppSettings["EAIItemMasterLogEnabled"]))
{
string serializedModel = JsonConvert.SerializeObject(model, Formatting.Indented);
Logger.Info(string.Format("INPUT FLOW -> ItemMaster, JSON: \r\n\"{0}\"", serializedModel));
}
}
catch (Exception ex)
{
Logger.ErrorFormat("[EAIItemMaster.svc.cs].LogSoapMessagePayload: {0}", ex.Message);
}
}
es 2.
using System.Configuration;
using System.IO;
using System.IO;
using Newtonsoft.Json;
// ...
private static BusinessCustomerServiceReference.BusinessCustomer GetBC_FromFile()
{
BusinessCustomerServiceReference.BusinessCustomer model = null;
OpenFileDialog ofd = new OpenFileDialog();
ofd.InitialDirectory = ConfigurationManager.AppSettings["SOAPLoggerPath"] + "Json"; // "C:\\spindox_logs\\xml da Pasquale";
if (ofd.ShowDialog() == DialogResult.OK)
{
if (ofd.FileName.EndsWith(".json"))
{
FileStream fs = new FileStream(ofd.FileName, FileMode.Open);
StreamReader sr = new StreamReader(fs);
model = JsonConvert.DeserializeObject<BusinessCustomerServiceReference.BusinessCustomer>(sr.ReadToEnd());
sr.Close();
fs.Close();
}
else
{
XmlSerializer s = new XmlSerializer(typeof(BusinessCustomerServiceReference.BusinessCustomer));
FileStream fs = new FileStream(ofd.FileName, FileMode.Open);
model = (BusinessCustomerServiceReference.BusinessCustomer)s.Deserialize(fs);
fs.Close();
}
}
return model;
}
Mappa e Link
JSON | Visual Studio | MS SQL | Dizionario
Parole chiave:
