2014-05-07 64 views
0

我是WCF的新手。我创建了一个WCF服务,并将数据作为JSON数据返回。我将返回数据分配给GridView,它完美地显示了数据。如何在C#中显示JSON数据

[OperationContract] 
[WebInvoke(Method = "GET", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate="employee/{search}")] 
List<Employee> Listing(string search); 

现在,我想在<的div元素>(验证数据)显示JSON字符串。我试图表明返回的数据,

dvJson.InnerHtml = esc.Listing("s"); 

它显示像使用C#DIV元素此

Employee[] 

如何显示JSON字符串?

在此先感谢。

回答

1

我发现溶液...

JavaScriptSerializer serializer = new JavaScriptSerializer(); 
    StringBuilder sb = new StringBuilder(); 
    serializer.Serialize(esc.Listing("s"), sb); 
    dvJson.InnerHtml = sb.ToString(); 

输出:

[{"ID":1,"Name":"Raja"},{"ID":2,"Name":"Manisha"},{"ID":4,"Name":"Sam"},{"ID":7,"Name":"Suresh"}] 

使用DataContractJsonSerializer (Pranav辛格代码更新[2-4线])

避免类型信息,设置JSON串行器设置EmitTypeInformation to "Never",来自JSON数据。

MemoryStream stream1 = new MemoryStream(); 
    DataContractJsonSerializerSettings settings = new DataContractJsonSerializerSettings(); 
    settings.EmitTypeInformation = System.Runtime.Serialization.EmitTypeInformation.Never; 
    DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(List<Employee>), settings); 
    ser.WriteObject(stream1, esc.Listing("s")); 
    stream1.Position = 0; 
    StreamReader sr = new StreamReader(stream1); 
    dvJson.InnerHtml = sr.ReadToEnd(); 

感谢

0

使用DataContractJsonSerializer类,见DataContractJsonSerializer Class

它比JavaScriptSerializer更好,因为它可以安全地从反序列化JSON字符串对象和WCF的一部分。

用法:

MemoryStream stream1 = new MemoryStream(); 
    DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (List<Employee>)); 
    ser.WriteObject(stream1, esc.Listing("s")); 
    stream1.Position = 0; 
    StreamReader sr = new StreamReader(stream1); 
    dvJson.InnerHtml = sr.ReadToEnd(); 

为了避免类型信息(用下面的代码替换的第二线)

JSON串行设置:设置EmitTypeInformation to "Never"以避免来自JSON数据 “__type” 信息。

DataContractJsonSerializerSettings settings = new DataContractJsonSerializerSettings(); 
    settings.EmitTypeInformation = System.Runtime.Serialization.EmitTypeInformation.Never; 
    DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(List<Employee>), settings); 
+0

它显示输出:[{ “__type”: “雇员:#Org”, “ID”:1, “名称”: “拉加”},{ “__类型”: “雇员:#Org”, “ID”:2 “名称”: “MANISHA”}]。我们可以通过'__type'来获取数据:“Employee:#Org”'? – Jesuraja

+0

n您的web.config:而不是''元素使用''为您的'endpointBehaviors',例如: ' endpointBehaviors> <行为名称= “MyServiceEndpoint”> ' –

+0

http://stackoverflow.com/questions/627356/how-to-not-serialize-the-type-property-on- JSON对象 –