如何在c#中显示JSON数据
本文关键字:显示 JSON 数据 | 更新日期: 2023-09-27 18:01:58
我是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);
现在,我想在
中显示JSON字符串元素(以验证数据)。我试图显示返回的数据,
dvJson.InnerHtml = esc.Listing("s");
显示如下
Employee[]
如何使用c#在div元素中显示JSON字符串?
我找到解决办法了…
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行])
为避免Type信息,从JSON数据中设置JSON Serializer setting 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();
谢谢
使用DataContractJsonSerializer
类,参考DataContractJsonSerializer类
它比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();
避免Type信息(用下面的代码替换第二行)
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);