diff --git a/Sources/XXClient/Helpers/ConvertJsonNumberToString.swift b/Sources/XXClient/Helpers/ConvertJsonNumberToString.swift
new file mode 100644
index 0000000000000000000000000000000000000000..293f1ca640c4c69fc3e3958329b51671ff6b3508
--- /dev/null
+++ b/Sources/XXClient/Helpers/ConvertJsonNumberToString.swift
@@ -0,0 +1,19 @@
+import Foundation
+
+func convertJsonNumberToString(
+  in input: Data,
+  at key: String
+) -> Data {
+  guard var string = String(data: input, encoding: .utf8) else {
+    return input
+  }
+  string = string.replacingOccurrences(
+    of: #""\#(key)"( *):( *)([0-9]+)( *)(,*)"#,
+    with: #""\#(key)"$1:$2"$3"$4$5"#,
+    options: [.regularExpression]
+  )
+  guard let output = string.data(using: .utf8) else {
+    return input
+  }
+  return output
+}
diff --git a/Tests/XXClientTests/Helpers/ConvertJsonNumberToStringTests.swift b/Tests/XXClientTests/Helpers/ConvertJsonNumberToStringTests.swift
new file mode 100644
index 0000000000000000000000000000000000000000..db3a4b2edc77a81ae493a03b9294389ff7c6a203
--- /dev/null
+++ b/Tests/XXClientTests/Helpers/ConvertJsonNumberToStringTests.swift
@@ -0,0 +1,84 @@
+import CustomDump
+import XCTest
+@testable import XXClient
+
+final class ConvertJsonNumberToStringTests: XCTestCase {
+  func testConverting() {
+    assert(
+      input: #"{"number":1234567890,"text":"hello"}"#,
+      key: "number",
+      expected: #"{"number":"1234567890","text":"hello"}"#
+    )
+
+    assert(
+      input: #"{"text":"hello","number":1234567890}"#,
+      key: "number",
+      expected: #"{"text":"hello","number":"1234567890"}"#
+    )
+
+    assert(
+      input: #"{  "number"  :  1234567890  ,  "text"  :  "hello"  }"#,
+      key: "number",
+      expected: #"{  "number"  :  "1234567890"  ,  "text"  :  "hello"  }"#
+    )
+
+    assert(
+      input: #"{  "text"  :  "hello"  ,  "number"  :  1234567890  }"#,
+      key: "number",
+      expected: #"{  "text"  :  "hello"  ,  "number"  :  "1234567890"  }"#
+    )
+
+    assert(
+      input: """
+      {
+        "number": 1234567890,
+        "text": "hello"
+      }
+      """,
+      key: "number",
+      expected: """
+      {
+        "number": "1234567890",
+        "text": "hello"
+      }
+      """
+    )
+
+    assert(
+      input: """
+      {
+        "text": "hello",
+        "number": 1234567890
+      }
+      """,
+      key: "number",
+      expected: """
+      {
+        "text": "hello",
+        "number": "1234567890"
+      }
+      """
+    )
+  }
+}
+
+private func assert(
+  input: String,
+  key: String,
+  expected: String,
+  file: StaticString = #file,
+  line: UInt = #line
+) {
+  XCTAssertNoDifference(
+    String(
+      data: convertJsonNumberToString(
+        in: input.data(using: .utf8)!,
+        at: key
+      ),
+      encoding: .utf8
+    )!,
+    expected,
+    file: file,
+    line: line
+  )
+}