Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit 2a69915

Browse files
committed
Add test for JavaScript object literal
1 parent e1fe9cc commit 2a69915

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

tests/ServiceStack.Text.Tests/RuntimeSerializtionTests.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,5 +285,32 @@ public void Can_deserialize_object_with_unknown_JSON_into_object_type()
285285
}
286286
}
287287

288+
[Test]
289+
public void Can_serialize_JS_literal_into_DTO()
290+
{
291+
JsonTypeSerializer.Instance.ObjectDeserializer = segment =>
292+
{
293+
segment.ParseNextToken(out object value, out _);
294+
return value;
295+
};
296+
297+
var js = @"{""Object"":{ Int:1,String:'foo',Bool:true,List:[{Int:1,String:`foo`,Bool:true}],Dictionary:{key:{Int:1,String:""foo"",Bool:true}}}}";
298+
299+
// into DTO with Object property
300+
var dtoFromJson = js.FromJson<RuntimeObject>();
301+
var jsonType = (Dictionary<string, object>)dtoFromJson.Object;
302+
Assert.That(jsonType["Int"], Is.EqualTo(1));
303+
Assert.That(jsonType["Int"], Is.EqualTo(1));
304+
Assert.That(jsonType["String"], Is.EqualTo("foo"));
305+
Assert.That(jsonType["Bool"], Is.EqualTo(true));
306+
var jsonList = (List<object>)jsonType["List"];
307+
Assert.That(((Dictionary<string, object>)jsonList[0])["Int"], Is.EqualTo(1));
308+
var jsonDict = (Dictionary<string, object>)jsonType["Dictionary"];
309+
Assert.That(((Dictionary<string, object>)jsonDict["key"])["Int"], Is.EqualTo(1));
310+
311+
JsonTypeSerializer.Instance.ObjectDeserializer = null;
312+
}
313+
314+
288315
}
289316
}

0 commit comments

Comments
 (0)