我是WCF的新手。我创建了一个WCF服务并将数据作为JSON数据返回。我将返回数据分配给GridView,它完美地显示了数据。
[OperationContract]
[WebInvoke(Method = "GET", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate="employee/{search}")]
List<Employee> Listing(string search);
现在,我想在&lt; div&gt;中显示JSON字符串element(用于验证数据)。我试图显示返回数据,
dvJson.InnerHtml = esc.Listing("s");
它显示如下
Employee[]
如何使用C#显示div元素中的JSON字符串?
提前致谢。
答案 0 :(得分: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 Singh代码更新[2-4行])
要避免输入类型信息,请从JSON数据中设置JSON Serializer设置 EmitTypeInformation to "Never"
。
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();
由于
答案 1 :(得分: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 Serializer设置:设置 EmitTypeInformation to "Never"
以避免来自JSON数据的“__Type”信息。
DataContractJsonSerializerSettings settings = new DataContractJsonSerializerSettings();
settings.EmitTypeInformation = System.Runtime.Serialization.EmitTypeInformation.Never;
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(List<Employee>), settings);