dcolliervb23
12/9/2014 - 11:08 PM

Write/Serialize C# class object to JSON object

Write/Serialize C# class object to JSON object


// Write/Serialize C# class object to JSON object
// API's used:

// 	* System.Runtime.Serialization - .NET 4.5 Serialization
// 	* JsonPrettyPrinterPlus


         private static void SaveMeasureResultsFile( Category3MeasureModel results, string measureBaseDirPath, DirectoryInfo measureDataDir, string measureDataDirSuffix)
        {
            var resultsSerializer = new DataContractJsonSerializer(typeof (Category3MeasureModel));
//            FileStream stream = File.OpenWrite((String.Format("{0}results.json", downloadDirectory)));
            var stream = new MemoryStream();
            resultsSerializer.WriteObject(stream, results);
            string resultString = Encoding.Default.GetString(stream.ToArray());

            stream.Close();
            stream.Dispose();
            var resultsFile = new StreamWriter(String .Format(" {0}results.json", measureDataDir.FullName));
            var beautifiedJson = BeautifyJson(resultString);
            resultsFile.Write(beautifiedJson);
            resultsFile.Flush();
            resultsFile.Close();
            AddFileToUnitTestProject(measureDataDirSuffix + @"results.json", measureBaseDirPath, measureDataDir.FullName);
        }



         private static string BeautifyJson( string json)
        {
            var jPrinter = new JsonPrettyPrinter(new JsonPPStrategyContext ());
            var output = jPrinter.PrettyPrint(json);
            return output;
        }


serialize array of objects:

        private static Person[] CreateMeasureModelFromJsonParams(string jsonParams)
        {
            var serializer = new DataContractJsonSerializer(typeof(Person[]));
            var stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonParams));
            var measuresModel = serializer.ReadObject(stream);
            Console.WriteLine(measuresModel);
            stream.Close();
            return (Person[])measuresModel;
        }

    }

    [DataContract]
    class Person
    {
        [DataMember]
        public string FirstName { get; set; }
        [DataMember]
        public string LastName { get; set; }
    }