using System.Collections;
using System.Collections.Generic;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;
using System.Web.SessionState;
public class IPByteArrayConverter : JsonConverter
private static string ConvertIPByteArraytoString(byte[] ip)
StringBuilder builder = new StringBuilder();
for (int i = 1; i < ip.Length; i++)
return builder.ToString();
private static byte[] ConvertIPStringToByteArray(string ip)
var split = ip.Split('.');
for (int i = 0; i < split.Length; i++)
if (!byte.TryParse(split[i], out blah[i]))
public override bool CanConvert(Type objectType)
throw new NotImplementedException();
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
if (reader.TokenType == JsonToken.Null)
var token = JToken.Load(reader);
if (token.Type == JTokenType.Bytes)
return ConvertIPStringToByteArray((string)token);
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
var bytes = (byte[])value;
writer.WriteValue(ConvertIPByteArraytoString(bytes));
[JsonConverter(typeof(IPByteArrayConverter))]
public byte[] RightTesterIP;
[JsonConverter(typeof(IPByteArrayConverter))]
public byte[] LeftTesterIP;
public static void Test()
RightTesterIP = new byte[] { 192, 168, 0, 1 },
LeftTesterIP = new byte[] { 192, 168, 2, 2 },
var json = JsonConvert.SerializeObject(test);
Console.WriteLine("Serialized Settings: ");
var test2 = JsonConvert.DeserializeObject<Settings>(json);
var json2 = JsonConvert.SerializeObject(test2);
Console.WriteLine("Deserialized and re-serialized Settings: ");
Console.WriteLine(json2);
public static void Main()
Console.WriteLine("Json.NET version: " + typeof(JsonSerializer).Assembly.FullName);