Json не включает "\r\n\"
Я вызываю веб сервис WCF с помощью php curl
iservice.в CS
{ [OperationContract] [WebInvoke(UriTemplate = "/SaveData",Method = "*",BodyStyle = WebMessageBodyStyle.ق , ResponseFormat = WebMessageFormat.Json,RequestFormat =WebMessageFormat.Json)] string SaveData(String DataResult); }
обслуживание.в CS
public class Service : IService { public string SaveData(String DataResult) { return "OK"; } }
когда я публикую json с помощью этого кода
CURLOPT_POSTFIELDS => "\r\n\"{results:[{msgId:'1005',to:'966001',status:'D'},{msgId:'1005',to:'966002',status:'D'}]}\"",
возврат "ОК"
Но когда я публикую json с помощью этого кода
CURLOPT_POSTFIELDS => "{results:[{msgId:'1005',to:'966001',status:'D'},{msgId:'1005',to:'966002',status:'D'}]}",
возвращать ошибку :
The server encountered an error processing the request. The exception message is 'There was an error checking start element of object of type JsonData. The token '"' was expected but found 'r'.'. See server logs for more details. The exception stack trace is:
Разница между ними "\r\n\"
Проблема заключается в том, что строковая переменная не принимает кодировку json.
Я хочу решить в Iservice.cs, потому что json является постом компании и не может быть изменен
Как изменить строку DataResult для получения posting json
Что я уже пробовал:
Я меняю строку с помощью этого
string SaveData(RootObject DataResult); } [DataContract] public class JsonData { [DataMember] public string msgId { get; set; } [DataMember] public string to { get; set; } [DataMember] public string status { get; set; } } [DataContract] public class RootObject { [DataMember] public List<JsonData> results { get; set; } }
Richard MacCutchan
Вам нужно включить экранированные двойные кавычки в начале и конце вашей строки JSON.
Member 12857222
CURLOPT_POSTFIELDS =&ГТ; "{результаты:[{например:'1005',в:'966001',статус:'Д'},{например:'1005',в:'966002',статус:'Д'}]}",
Строка JSON отправляется от компании и не может быть изменена
Я хочу отредактировать код iservice.cs
Richard MacCutchan
Так как же, по-твоему, кто-то здесь может помочь?
Member 12857222
При использовании почтальона,работающего в системе Mac или Linux,отправитель JSON будет иметь следующий формат : "{results:[{msgId:'1005', to:'966001', status:'D'}, {msgId:'1005', to:'966002',status:'D'}]}"
Richard MacCutchan
Затем вам нужно выяснить, почему они посылают в неправильном формате.
Member 12857222
не тот формат
этот формат при публикации на Mac или Linux
Richard MacCutchan
Так что же, по-твоему, здесь можно сделать? Мы понятия не имеем, откуда приходит этот текст JSON, куда он направляется и кто должен нести за него ответственность.
Kornfeld Eliyahu Peter
Проблема в том, что на самом деле это искаженный JSON - см. определения...