Question35849661 ExpandoObject AsDictionary

CSharp · Console

/Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.IO;
using System.Threading;
using System.Collections;
using System.Runtime.Serialization;
using System.Dynamic;

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;


    public class RootObject
    {
        public RootObject() { this.items = new List<ExpandoObject>(); }

        public Guid application_uid { get; set; }
        public string formId { get; set; }
        public int recordCount { get; set; }
        public List<ExpandoObject> items { get; set; }
    }

	public static class DictionaryExtensions
	{
		public static IDictionary<TKey, TValue> AsDictionary<TKey, TValue>(this IDictionary<TKey, TValue> dictionary)
		{
			return dictionary;
		}
	}

	public static class DynamicExtensions
	{
		public static dynamic AsDynamic(this IDynamicMetaObjectProvider obj)
		{
			return obj;
		}
	}

    public class TestClass
    {
        static string GetJson()
        {
            var json = @"{
               ""application_uid"":""3912d337-b797-4508-8c95-c76df8888ada"",
               ""formId"":""F_Form1"",
               ""recordCount"":1,
               ""items"":[
                  {
                     ""lastModified"":""2015-12-11T20:07:25.774Z"",
                     ""lastModifiedBy"":{
                        ""displayName"":""Anonymous Guest User"",
                        ""email"":"""",
                        ""login"":""Anonymous Guest User""
                     },
                     ""created"":""2015-12-11T20:07:25.774Z"",
                     ""createdBy"":{
                        ""displayName"":""Anonymous Guest User"",
                        ""email"":"""",
                        ""login"":""Anonymous Guest User""
                     },
                     ""draft_ownerid"":"""",
                     ""flowState"":""ST_End"",
                     ""id"":20,
                     ""uid"":""5928bb18-5b53-43f9-8831-baab042e1ca2"",
                     ""F_ReceivedYorN"":""Y"",
                     ""F_ContractNumber"":""5556420121"",
                     ""F_FileNumber"":""0630250"",
                     ""F_SubscriberLastName"":""JEFFERY""
                  },
                  {
                     ""lastModified"":""2015-12-11T20:07:25.774Z"",
                     ""lastModifiedBy"":{
                        ""displayName"":""Anonymous Guest User"",
                        ""email"":"""",
                        ""login"":""Anonymous Guest User""
                     },
                     ""created"":""2015-12-11T20:07:25.774Z"",
                     ""createdBy"":{
                        ""displayName"":""Anonymous Guest User"",
                        ""email"":"""",
                        ""login"":""Anonymous Guest User""
                     },
                     ""draft_ownerid"":"""",
                     ""flowState"":""ST_End"",
                     ""id"":40,
                     ""uid"":""1111bb18-1111-43f9-8831-baab042e1ca2"",
                     ""F_SomeCustomProperty1"":""Y"",
                     ""F_SomeCustomProperty2"":""5556420121"",
                     ""F_SomeCustomProperty3"":""0630250"",
                     ""F_SomeCustomProperty4"":""JEFFERY""
                  }
               ]
            }";
            return json;
        }

        public static void Test()
        {
            var json = GetJson();

			Console.WriteLine("Raw Json:\n");
			Console.WriteLine(JToken.Parse(json));
			Console.WriteLine("");
			
            var root = JsonConvert.DeserializeObject<RootObject>(json);

            foreach (var item in root.items)
            {
                Console.WriteLine(string.Format("Showing custom properties for Item id {0}, uid {1}, flowState \"{2}\":", 
												item.AsDynamic().id, item.AsDynamic().uid, item.AsDynamic().flowState));
                {
                    foreach (var field in item.AsDictionary())
                    {
						if (field.Key == "id" || field.Key == "uid" || field.Key == "flowState")
							continue;						
                        Console.WriteLine(string.Format("  - Field: \"{0}\":\n    Value: {1}", field.Key, JsonConvert.SerializeObject(field.Value)));
                    }
                    Console.WriteLine("");
                }
            }
        }
    }
						
	public class Program
	{
		public static void Main()
		{
			Console.WriteLine(string.Format("Json.NET version: {0}.\n", typeof(JsonSerializer).Assembly.FullName));		
			
			TestClass.Test();
		}
	}
;