1、先建一个WCF Service

建一个ServiceContract接口 1 [ServiceContract]

public interface IJsonWCFService
{
/// <summary>
/// GetJsonResult
/// </summary>
/// <param name="name"></param>
/// <param name="address"></param>
/// <param name="phone"></param>
/// <remarks>
/// 为实现Json序列化,添加属性
/// [WebInvoke(ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
/// </remarks>
/// <returns></returns>
[OperationContract]
[WebInvoke(ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
JsonResult GetJsonResult(string name, string address, string phone);
}

实现这个接口

public class JsonWCFService : IJsonWCFService
{
#region IJsonWCFService Members
/// <summary>
/// Implement the interface
/// </summary>
/// <param name="name">Name</param>
/// <param name="address">Address</param>
/// <param name="phone">PhoneNumber</param>
/// <returns>JsonResult</returns>
public JsonResult GetJsonResult(string name, string address, string phone)
{
JsonResult result = new JsonResult(name, address, phone);
return result;
}
#endregion
}

一个返回的DataContract类

[DataContract]
public class JsonResult
{
/// <summary>
/// Construct
/// </summary>
public JsonResult(string name, string address, string phone)
{
_name = string.Format("Name:{0}", name);
_address = string.Format("Address:{0}", address);
_phoneNumber = string.Format("PhoneNubmer:{0}", phone);
} private string _name;
/// <summary>
/// Name
/// </summary>
[DataMember]
public string Name
{
get { return _name; }
set { _name = value; }
}
private string _address;
/// <summary>
/// Address
/// </summary>
[DataMember]
public string Address
{
get { return _address; }
set { _address = value; }
}
private string _phoneNumber;
/// <summary>
/// PhoneNumber
/// </summary>
[DataMember]
public string PhoneNumber
{
get { return _phoneNumber; }
set { _phoneNumber = value; }
}

2、为实现Json序列化设置,我们还得添加一个WebContentTypeMapper

(此类最终会用在Service的配置文件中)

using System.ServiceModel.Channels;

 namespace Microsoft.Ajax.Samples
{
/// <summary>
/// JsonContentTypeMapper
/// 用在配置中<webMessageEncoding webContentTypeMapperType="Microsoft.Ajax.Samples.JsonContentTypeMapper, JsonContentTypeMapper, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
/// </summary>
public class JsonContentTypeMapper : WebContentTypeMapper
{
public override WebContentFormat GetMessageFormatForContentType(string contentType)
{
if (contentType == "text/javascript")
{
return WebContentFormat.Json;
}
else
{
return WebContentFormat.Default;
}
}
}
}

3、添加svc文件,便于发布Service

svc文件其实是十分简单的一个文件,以下是SVC文件中的内容,可以将此文件添加在网站项目的根目录,也可以是一个子目录。对此没有太多的要求。

 <%@ ServiceHost Language="C#" Debug="true" Service="JsonWCFService" %>

4、添加web.config文件

WCFService中相当一部分知识是关于配置的

<?xml version="1.0"?>
<configuration>
<appSettings/>
<connectionStrings/>
<system.web> </system.web>
<system.serviceModel>
<behaviors>
<endpointBehaviors >
<behavior name="jsonWcfBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<bindings>
<customBinding>
<binding name="JsonMapper">
<!--此处配置相当重要,使用了我们编写的JsonContentTypeMapper类,约定返回值类型是Json-->
<webMessageEncoding webContentTypeMapperType="Microsoft.Ajax.Samples.JsonContentTypeMapper, JsonContentTypeMapper, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
</webMessageEncoding>
<httpTransport manualAddressing="true"/>
</binding>
</customBinding>
</bindings>
<services>
<service name="JsonWCFService" >
<!--注意此处的endpoint配置,address和contract两个属性,在客户端Js调用时会用的上-->
<endpoint address="ajaxEndpoint" behaviorConfiguration="jsonWcfBehavior"
binding="customBinding"
bindingConfiguration="JsonMapper" contract="IJsonWCFService">
</endpoint>
</service>
</services>
</system.serviceModel>
</configuration>

WCF: 以Json格式返回对象的更多相关文章

  1. JSon_零基础_005_将po(bean)对象集合List转换为JSon格式的对象字符串,返回给界面

    将po(bean)对象集合List转换为JSon格式的对象字符串,返回给界面 导入jar包: 编写:po(bean)代码: package com.west.webcourse.po; /** * 第 ...

  2. JSon_零基础_005_将po(bean)对象转换为JSon格式的对象字符串,返回给界面

    将po(bean)对象转换为JSon格式的对象字符串,返回给界面 导入jar包: 编写po(bean)类: package com.west.webcourse.po; /** * 第01步:编写be ...

  3. JSon_零基础_004_将Set集合对象转换为JSon格式的对象字符串,返回给界面

    将Set集合对象转换为JSon格式的对象字符串,返回给界面 需要导入的jar包: 编写:servlet: package com.west.webcourse.servlet; import java ...

  4. JSon_零基础_003_将Map集合对象转换为JSon格式的对象字符串,返回给界面

    将Map集合对象转换为JSon格式的对象字符串,返回给界面 需导入的jar包: 编写servlet: package com.west.webcourse.servlet; import java.i ...

  5. JSon_零基础_002_将List类型数组转换为JSon格式的对象字符串,返回给界面

    将List类型数组转换为JSon格式的对象字符串,返回给界面 所需要导入的包: 编写bean: package com.west.webcourse.po; /** * 第01步:编写bean类, * ...

  6. 如何解决jersey框架中以json格式返回数组,当数组中元素一个时json格式不对

    原文地址:http://www.cnblogs.com/swpk/p/3566536.html?utm_source=tuicool jersey 是oracle 出的一个较好的REST框架.使用此框 ...

  7. 总结的一些json格式和对象/String/Map/List等的互转工具类

    总结的一些json格式和对象/String/Map/List等的互转工具类,有需要的可以看看,需要引入jackson-core-asl-1.7.1.jar.jackson-jaxrs-1.7.1.ja ...

  8. 把普通对象转换成json格式的对象

    1.什么叫做JSON?JSON只是一种数据格式(它不是一种新的数据类型) var obj = {name: "中国", age: 5000};//->普通格式的对象 var ...

  9. springMVC框架下返回json格式的对象,list,map

    原文地址:http://liuzidong.iteye.com/blog/1069343 注意这个例子要使用jQuery,但是jquery文件属于静态的资源文件,所以要在springMVC中设置静态资 ...

随机推荐

  1. android的布局-----RelativeLayout(相对布局)

    学习导图 注:父容器定位的属性值只能是Boolean ,兄弟组件定位的属性值只能是ID 典型案例(梅花) <?xml version="1.0" encoding=" ...

  2. python对象的复制问题

    list 的拷贝问题: 1, >>> a [1, 2] >>> b=a[:] >>> b [1, 2] >>> b[0]=20 ...

  3. (入门SpringBoot)SpringBoot结合定时任务task(十)

    SpringBoot整合定时任务task 使用注解EnableScheduling在启动类上. 定义@Component作为组件被容器扫描. 表达式生成地址:http://cron.qqe2.com ...

  4. spring 自定义解析类

    设计配置属性和JavaBean 编写XSD文件 编写NamespaceHandler和BeanDefinitionParser完成解析工作 编写spring.handlers和spring.schem ...

  5. dedecms让channelartlist标签支持currentstyle属性方

    把dedecms中用channelartlist当导航的站很普遍,但是有的站需要用到当前页中导航样,就是随着不同的页面,导航样式也随着变化. 首先打开include\taglib\channelart ...

  6. Mac搭建python环境

    1 安装xcode 2 安装 brew ruby-e"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/mast ...

  7. tensorflow 运行 python convolutional.py时

    Traceback (most recent call last): File "convolutional.py", line 326, in <module> tf ...

  8. goreplay使用

    最新版的发布公告:https://leonsbox.com/goreplay-v0-16-and-4th-anniversary-5408b1fd72e0 主要提到:中间件.报文解压.从kafka读取 ...

  9. VS2010 C#调用C++ DLL文件 【转】

    http://www.soaspx.com/dotnet/csharp/csharp_20110406_7469.html 背景 在项目过程中,有时候你需要调用非C#编写的DLL文件,尤其在使用一些第 ...

  10. 算法之美--1.蒙特卡洛方法计算pi

    基本思想: 利用圆与其外接正方形面积之比为pi/4的关系,通过产生大量均匀分布的二维点,计算落在单位圆和单位正方形的数量之比再乘以4便得到pi的近似值.样本点越多,计算出的数据将会越接近真识的pi(前 ...