Member 12857222 Ответов: 0

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 - см. определения...

0 Ответов