Пример #1
0
        public static DataSet <T> Deserialize(FileInfo file)
        {
            try
            {
                using (StreamReader streamReader = new StreamReader(file.OpenRead()))
                    using (JsonReader reader = new JsonTextReader(streamReader))
                    {
                        var         serializer = new JsonSerializer();
                        DataSet <T> output     = serializer.Deserialize <DataSet <T> >(reader);
                        return(output);
                    }
            } catch (Exception ex)
            {
                // Try and load old-style DataSets here
                try
                {
                    DataSet <IncidentData> output = new DataSet <IncidentData>();
                    FileInfo tempFile             = new FileInfo(Path.GetTempFileName());
                    using (StreamReader streamReader = new StreamReader(file.OpenRead()))
                        using (StreamWriter tempWriter = new StreamWriter(tempFile.OpenWrite()))
                        {
                            while (!streamReader.EndOfStream)
                            {
                                var line = streamReader.ReadLine()
                                           .Replace("DataSet", "DataSet016")
                                           .Replace("IncidentData", "IncidentData016")
                                           .Replace("ResponseData", "ResponseData016");
                                tempWriter.WriteLine(line);
                            }
                        }
                    using (StreamReader tempReader = tempFile.OpenText())
                        using (JsonReader jsonReader = new JsonTextReader(tempReader))
                        {
                            JsonSerializer jsonSerializer = new JsonSerializer
                            {
                                PreserveReferencesHandling = PreserveReferencesHandling.All,
                                TypeNameHandling           = TypeNameHandling.All
                            };

                            var oldDataSet = jsonSerializer.Deserialize <DataSet016 <IncidentData016> >(jsonReader);
                            foreach (IncidentData016 oldIncident in oldDataSet)
                            {
                                IncidentData incident = new IncidentData(data: oldIncident.Data);
                                foreach (ResponseData016 oldResponse in oldIncident.Responses)
                                {
                                    ResponseData response = new ResponseData(oldResponse.Id, oldResponse.Data, oldResponse.TimingData.ToArray());
                                    incident.Responses.Add(response);
                                }
                                output.Add(incident);
                            }
                        }
                    tempFile.Delete();
                    return(output as DataSet <T>);
                }
                catch (Exception ex2)
                {
                    throw new Exception(string.Format("String does not contain valid DataSet JSON: {0} {1}", ex, ex2));
                }
            }
        }
Пример #2
0
        public static DataSet <T> DeserializeJson(string json, bool forceOldStyle = false)
        {
            Exception lastEx = null;

            if (!forceOldStyle)
            {
                try
                {
                    DataSet <T> output = JsonConvert.DeserializeObject <DataSet <T> >(json);
                    return(output);
                }
                catch (Exception ex)
                {
                    lastEx = ex;
                }
            }

            // Try and load old-style DataSets here
            try
            {
                if (typeof(T) == typeof(IncidentData))
                {
                    json = json.Replace("DataSet", "DataSet016");
                    json = json.Replace("IncidentData", "IncidentData016");
                    json = json.Replace("ResponseData", "ResponseData016");

                    DataSet016 <IncidentData016> oldDataSet = JsonConvert.DeserializeObject <DataSet016 <IncidentData016> >(json, new JsonSerializerSettings()
                    {
                        PreserveReferencesHandling = PreserveReferencesHandling.Objects, TypeNameHandling = TypeNameHandling.Auto
                    });
                    DataSet <IncidentData> output = new DataSet <IncidentData>();
                    foreach (IncidentData016 oldIncident in oldDataSet)
                    {
                        IncidentData incident = new IncidentData(data: oldIncident.Data);
                        foreach (ResponseData016 oldResponse in oldIncident.Responses)
                        {
                            ResponseData response = new ResponseData(oldResponse.Id, oldResponse.Data, oldResponse.TimingData.ToArray());
                            incident.Responses.Add(response);
                        }
                        output.Add(incident);
                    }
                    return(output as DataSet <T>);
                }
                else
                {
                    throw new NotImplementedException();
                }
            } catch (Exception ex2)
            {
                throw new Exception(string.Format("String does not contain valid DataSet JSON: {0} {1}", lastEx, ex2));
            }
        }
Пример #3
0
        public IncidentData(IncidentData source)
        {
            Id        = source.Id;
            Time      = source.Time;
            Location  = source.Location;
            Longitude = source.Longitude;
            Latitude  = source.Latitude;

            foreach (KeyValuePair <string, object> kvp in source.Data)
            {
                Data.Add(kvp.Key, kvp.Value);
            }

            Data["Responses"] = new DataSet <ResponseData>(this);

            Responses.AddRange(source.Responses);

            Intern();
        }