2009-07-24 78 views
5

我有一个Web服务返回JSON,但现在我想修改它以允许调用者指定回调函数,以便返回从:JSON DATA到specifiedFunction(JSON DATA);我现在返回JSON的方式只是返回一个对象的实例,让.NET执行它的序列化魔术,如果我更改为只返回一个字符串,我可以添加函数的名称和数据的括号,但是那么我最后会在返回中带有引号,因为它是一个字符串,我不想要那些。那我该怎么去解决呢?从WCF REST Web服务返回包装在回调函数中的JSON

之所以这样,是我们希望开发者调用我们的API,以便能够使用动态脚本标记,这里http://www.xml.com/pub/a/2005/12/21/json-dynamic-script-tag.html

回答

5

您所使用的技术称为JSONP(带填充的JSON)。

How to support JSONP in WCF services

JsonPEncoder是对WCF JSON编码器的包装编码器 。它将 大部分呼叫委托给包装好的编码器。 WriteMesage方法已被 重写,以用回调方法填充传出消息 。 JsonBehavior用于服务 操作以启用JSONP编码为 的操作。查询参数 包含回调 函数名的URI被指定为该行为的属性 CallBack

1

解释我不知道他们正在使用的HTML版本,但在所有版本我已经使用过,脚本标签中的src属性必须是一个URL。他们以某种方式使用一个功能,而我没有看到这个工作。

您是否真的看到过动态脚本标记工作?

+0

我没有亲自使用它,但据我所知它可以完成。有一些Web服务的例子可以用我以后的样式返回,例如http://www.geonames.org/export/JSON-webservices.html – mbehan 2009-07-24 17:24:04

+0

我并不关心这些服务,因为我是浏览器。更新的人可以纠正我,但我不希望除了URL在src属性中工作。 – 2009-07-24 17:35:30

+0

无论如何,如何根据需要格式化返回的任何帮助将不胜感激:) – mbehan 2009-07-24 17:53:16