public void MultipleLayerClass_Test() { var typeMapping = new TypeMapping <Multiple1LayerClass>(); var mappings1 = new KeyValuePair <Expression <Func <Multiple1LayerClass, object> >, FieldTypes>(ic => ic.Obj, FieldTypes.Object); var mappings2 = new KeyValuePair <Expression <Func <Multiple1LayerClass, object> >, FieldTypes>(ic => ic.Nested, FieldTypes.Nested); typeMapping.AddMapping(mappings1, mappings2); typeMapping.AddNestedMapping(mlc => mlc.Nested, new KeyValuePair <Expression <Func <Multiple2LayerClass, object> >, FieldTypes>(ml2 => ml2.Word, FieldTypes.Keyword), new KeyValuePair <Expression <Func <Multiple2LayerClass, object> >, FieldTypes>(ml2 => ml2.Value, FieldTypes.Double), new KeyValuePair <Expression <Func <Multiple2LayerClass, object> >, FieldTypes>(ml2 => ml2.DateTime, FieldTypes.Date)); typeMapping.AddObjectMapping(mlc => mlc.Obj, new KeyValuePair <Expression <Func <Multiple2LayerClass, object> >, FieldTypes>(ml2 => ml2.Word, FieldTypes.Keyword), new KeyValuePair <Expression <Func <Multiple2LayerClass, object> >, FieldTypes>(ml2 => ml2.Value, FieldTypes.Double), new KeyValuePair <Expression <Func <Multiple2LayerClass, object> >, FieldTypes>(ml2 => ml2.DateTime, FieldTypes.Date)); var mlTm = typeof(Multiple1LayerClass).GetTypeMapping <Multiple1LayerClass>(); var json1 = JsonConvert.SerializeObject(new { mappings = typeMapping }); var json2 = JsonConvert.SerializeObject(new { mappings = mlTm }); Assert.AreEqual(json1, json2); }