diff --git a/logo.pdn b/logo.pdn
index 562dbff..66b4e5f 100644
Binary files a/logo.pdn and b/logo.pdn differ
diff --git a/logo.png b/logo.png
index 5434f8d..38ceaf6 100644
Binary files a/logo.png and b/logo.png differ
diff --git a/src/GraphQL.Query.Builder/QueryStringBuilder.cs b/src/GraphQL.Query.Builder/QueryStringBuilder.cs
index ab8a100..71ec0a3 100644
--- a/src/GraphQL.Query.Builder/QueryStringBuilder.cs
+++ b/src/GraphQL.Query.Builder/QueryStringBuilder.cs
@@ -45,6 +45,7 @@ public void Clear()
/// - Key value pair: `foo:"bar"` or `foo:10` ...
/// - List: `["foo","bar"]` or `[1,2]` ...
/// - Dictionary: `{foo:"bar",b:10}`
+ /// - Object: `{foo:"bar",b:10}`
///
///
/// The formatted query param.
@@ -54,7 +55,8 @@ internal protected virtual string FormatQueryParam(object value)
switch (value)
{
case string strValue:
- return "\"" + strValue + "\"";
+ string encoded = strValue.Replace("\"", "\\\"");
+ return $"\"{encoded}\"";
case byte byteValue:
return byteValue.ToString();
diff --git a/tests/GraphQL.Query.Builder.UnitTests/QueryStringBuilderTests.cs b/tests/GraphQL.Query.Builder.UnitTests/QueryStringBuilderTests.cs
index 72cd413..5bee1fe 100644
--- a/tests/GraphQL.Query.Builder.UnitTests/QueryStringBuilderTests.cs
+++ b/tests/GraphQL.Query.Builder.UnitTests/QueryStringBuilderTests.cs
@@ -21,6 +21,15 @@ public void TestFormatQueryParam_string()
Assert.Equal("\"value\"", new QueryStringBuilder().FormatQueryParam(value));
}
+ [Fact]
+ public void TestFormatQueryParam_string_json()
+ {
+ string value = "{\"foo\":\"bar\",\"array\":[1,2]}";
+ Assert.Equal(
+ "\"{\\\"foo\\\":\\\"bar\\\",\\\"array\\\":[1,2]}\"",
+ new QueryStringBuilder().FormatQueryParam(value));
+ }
+
[Fact]
public void TestFormatQueryParam_byte()
{
@@ -265,7 +274,7 @@ public void TestFormatQueryParam_Object()
};
Assert.Equal("{Age:10,Name:\"Test\",Orders:[{Product:{load:{weight:45},name:\"Truck 1\",wheelsNumber:6}}]}", new QueryStringBuilder().FormatQueryParam(@object));
-
+
// with inner object with null property
@object = new Customer
{