如何在C#中显示JSON数据

时间:2014-05-07 04:48:47

标签: c# json wcf

我是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字符串?

提前致谢。

2 个答案:

答案 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);