Как конвертировать \ используя newtonsoft.json.linq.serializeobject в vb.net httprequest?
У меня есть объект JSON, созданный с использованием Newtonsoft JObject, но я получаю ошибку неверного запроса при попытке отправить его, если какое-либо из свойств имеет пробелы, косые черты и т. Д.
updatestring = "date=2/14/2019"
Dim jobjattr As New Newtonsoft.Json.Linq.JObject(
New Newtonsoft.Json.Linq.JProperty("description", "test"),
New Newtonsoft.Json.Linq.JProperty("source", updatestring)
)
Dim jobjdat As New Newtonsoft.Json.Linq.JObject(
New Newtonsoft.Json.Linq.JProperty("type", "synch_log"),
New Newtonsoft.Json.Linq.JProperty("id", "6278042e-ed64-0418-a651-5c574dc4f12b"),
New Newtonsoft.Json.Linq.JProperty("attributes", jobjattr)
)
Dim jobj As New Newtonsoft.Json.Linq.JObject(New Newtonsoft.Json.Linq.JProperty("data", jobjdat))
Dim jsonserializersettings As New Newtonsoft.Json.JsonSerializerSettings
jsonserializersettings.StringEscapeHandling = Newtonsoft.Json.StringEscapeHandling.EscapeNonAscii
Dim stringReq = Newtonsoft.Json.JsonConvert.SerializeObject(jobj, jsonserializersettings)
Dim byteData As Byte() = System.Text.Encoding.UTF8.GetBytes(stringReq)
httprequest.ContentLength = byteData.Length
Dim postreqstream As System.IO.Stream = .GetRequestStream()
postreqstream.Write(byteData, 0, byteData.Length)
postreqstream.Close()
входящее задание = {"data":{"type":"synch_log","id":"6278042e-ed64-0418-a651-5c574dc4f12b","attribute":{"description":"test","source":"дата =2/14/2019"}}}
после сериализации byteData still = {"data":{"type":"synch_log","id":"6278042e-ed64-0418-a651-5c574dc4f12b","attribute": {"description": "test", "source ":" дата = 2/14 / 2019" }}}
Я ожидаю, что / будет сбежал. любая текстовая строка работает нормально, я также пробовал настройки jsonserializer как Default и EscapeHtml, но с тем же результатом.
Другие персонажи вызывают тот же эрор. "datetoday" публикует сообщения правильно, но "date=today" и "date today" приводят к 400 ошибочным запросам
Самый близкий ответ, который я нашел, состоит в том, что, возможно, объект удвоился, но я не вижу, как это будет.
1 ответ
Всем спасибо. Брайан, ты привел меня в правильном направлении. Я не упомянул, что это вызов API для SuiteCRM, но ваш вопрос заставил меня задуматься о взгляде на сервер, и оказалось, что в V8 API есть неразрешенная ошибка. Я просто предположил, что это был мой код.