2010-08-06 2 views
0

Почему можно отправить в WCF DataService следующий JSON строку:Противоречивые обработка котировок в JSON полезной нагрузки

{ SomeElement: 'val1', SomeOtherElement: 'val2' } 

whilest вы должны отправить в нормальной службы WCF, как

[OperationContract, 
WebInvoke (Method = "POST", 
      ResponseFormat = WebMessageFormat.Json, 
      RequestFormat = WebMessageFormat.Json, 
      BodyStyle = WebMessageBodyStyle.Wrapped)] 
public string SomeMehtod(string SomeElement, string SomeOtherElement) 

следующая строка JSON

{ "SomeElement": "val1", "SomeOtherElement": "val2" } 

Это непоследовательность не ясна для меня. Почему я должен использовать двойные кавычки в обычном веб-серию, в то время как я могу опустить кавычки для имени элемента в службах передачи данных WCF?

Может Сомон знает ответ на этот вопрос ....

+0

Стандарт JSON (http://www.json.org/) требует, чтобы имя элемента было процитировано, и для всех строк требуются двойные кавычки. Таким образом, ваш первый пример действителен JavaScript, но недействителен JSON. Но это не объясняет непоследовательность. –

+0

Да, это правильно, и служба данных WCF, похоже, также принимает двойные кавычки. Похоже, что WCF здесь более терпим, чем обычный WCF. Странная вещь, хотя, потому что службы данных WCF, введенные после WCF ... Мне просто интересно ... – Jeldrik

+0

Какой глагол вы используете для вызова вашей службы данных WCF (GET, POST, PUT и т. Д.)? Это также POST? И это настраиваемый метод обслуживания? –

ответ

0

Я очень хорошо знаком с внутренним водопроводным за разборе инфраструктуры WCF в JSON и, по существу, водопровод, которая заботится о второй ситуации на самом деле предназначен для поддержки «строгие» стандарты - жалоба JSON.

Это просто совпадение, что первая ситуация работает с несоответствующим JSON. Не читайте в нем. Это не было сознательным дизайнерским решением. Надеюсь, это очищает путаницу!

Для получения дополнительной информации вы можете просто изучить DataContractJsonSerializerOperationFormatter, DataContractJsonSerializerOperationBehavior и DataContractJsonSerializer с использованием Reflector.

Смежные вопросы