У меня есть объект 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()
входящее заданиеj = {"данные": { "Тип": "synch_log", "идентификатор": "6278042e-ed64-0418-a651-5c574dc4f12b", "атрибуты": { "описание": "тест", "источник": "дата = 2/ 14/2019 "}}}
после сериализации byteData still = {" data ": {" type ":" synch_log "," id ":" 6278042e-ed64-0418-a651-5c574dc4f12b ","Атрибуты ": {" description ":" test "," source ":" date = 2/14/2019 "}}}
Я ожидаю, что / будет экранирован.любая текстовая строка работает нормально. Я также пробовал настройки jsonserializer по умолчанию и EscapeHtml, но с тем же результатом.
Другие символы приводят к тому же самому ошибке.«datetoday» публикует сообщения правильно, но «date = today» и «date today» приводят к ошибке 400 неверных запросов
Самый близкий ответ, который я нашел, это то, что, возможно, объект удваивается, но я не вижукак это будет.