2014-05-07 93 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對象 –