using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization.Formatters;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;
private readonly List<string> _values;
private readonly Bar _bar = new Bar();
public Foo(IEnumerable<string> values)
_values = values.ToList();
_values = new List<string>();
public IEnumerable<string> Values { get { return _values; } }
public object Bar { get { return _bar; } }
public string Property1 { get; set; }
public static void Test()
var json = @"{""Values"":[""One"",""Two"",""Three""],""Bar"":{""Property1"":""Test""}}";
var deserializedFoo = JsonConvert.DeserializeObject<Foo>(json);
Assert.IsTrue(deserializedFoo.Values.Count() == 3 && ((Bar)deserializedFoo.Bar).Property1 == "Test");
Console.WriteLine( JsonConvert.SerializeObject(deserializedFoo));
public static void Main()
Console.WriteLine("Environment version: " + Environment.Version);
Console.WriteLine("Json.NET version: " + typeof(JsonSerializer).Assembly.FullName);
Console.WriteLine("Failed with unhandled exception: ");