forked from ServiceStack/ServiceStack.Text
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathJsonObjectTests.cs
More file actions
35 lines (29 loc) · 1.23 KB
/
JsonObjectTests.cs
File metadata and controls
35 lines (29 loc) · 1.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
using NUnit.Framework;
namespace ServiceStack.Text.Tests
{
[TestFixture]
public class JsonObjectTests
{
private const string JsonCentroid = @"{""place"":{ ""woeid"":12345, ""placeTypeName"":""St\\ate"" } }";
[Test]
public void Can_dynamically_parse_JSON_with_escape_chars()
{
var placeTypeName = JsonObject.Parse(JsonCentroid).Object("place").Get("placeTypeName");
Assert.That(placeTypeName, Is.EqualTo("St\\ate"));
placeTypeName = JsonObject.Parse(JsonCentroid).Object("place").Get<string>("placeTypeName");
Assert.That(placeTypeName, Is.EqualTo("St\\ate"));
}
[Test]
public void Does_escape_string_access()
{
string test = "\"quoted string\"";
var json = JsonSerializer.SerializeToString(new { a = test });
var jsonObject = JsonObject.Parse(json);
var actual = jsonObject["a"];
Assert.That(actual, Is.EqualTo(test));
Assert.That(jsonObject.Get("a"), Is.EqualTo(test));
Assert.That(jsonObject.Get<string>("a"), Is.EqualTo(test));
Assert.That(jsonObject.GetUnescaped("a"), Is.EqualTo(test.Replace("\"","\\\"")));
}
}
}