using System;
using System.Runtime.Serialization.Json;
using System.Runtime.Serialization;
using System.IO;
using System.Text;
using System.Collections.Generic;
namespace TestJson
{
[DataContract]
public class DataItem : JSON<DataItem>{
[DataMember]
public string username = "test";
}
[DataContract]
public class Config:TestJson.JSON<Config>
{
public Config(){
encoding = "utf-8";
}
[DataMember(EmitDefaultValue = true)]
public string id = "100";
[DataMember]
public string encoding { get; set; }
[DataMember]
public List<DataItem> plugins{get;set;}
}
[DataContract]
/// <summary>
/// Description of JsonTest.
/// </summary>
public class JSON<T>
{
public string Stringify(){
return Stringify(Encoding.UTF8);
}
public string Stringify(Encoding encode){
var serializer = new DataContractJsonSerializer(typeof(T));
var stream = new MemoryStream();
serializer.WriteObject(stream, this);
byte[] dataBytes = new byte[stream.Length];
stream.Position = 0;
stream.Read(dataBytes, 0, (int)stream.Length);
string dataString = encode.GetString(dataBytes);
stream.Close();
serializer = null;
stream = null;
return dataString;
}
public static T Parse(string text)
{
return Parse(text, Encoding.UTF8);
}
public static T Parse(string text, Encoding encode)
{
var serializer = new DataContractJsonSerializer(typeof(T));
var mStream = new MemoryStream(encode.GetBytes(text));
T readConfig = ( T)serializer.ReadObject(mStream);
mStream.Close();
serializer = null;
mStream = null;
return readConfig;
}
}
}