【问题标题】:How to return serialized to JSON using C#如何使用 C# 返回序列化为 JSON
【发布时间】:2011-06-28 20:07:36
【问题描述】:

我正在使用返回 JSON 的 WCF。但我收到的消息看起来像

"{\"ids\":[\"id\":1,\"id\":34,\"id\":67,\"id\":100,\"id\":133,\"id\":166,\"id\":199]}"

如何去掉第一个和最后一个引号?

编辑:

public class Ids {
   public IdDetails[] ids{get;set}
}
public class IdDetails{
   public int id {get;set}
}

这里我返回 JSON

public string GetIds(){
   Ids ids = new Ids();
   List<IdDetails> idd = new List<IdDetails>();
   for(int i=0;i<10; i++){
      idd.add(new IdDetails(i+1*33));
   }
   ids.ids = idd.ToArray();
   JavaScriptSerializer jSerialize = new JavaScriptSerializer();
   string json = jSerialize.Serialize(ids);
   return ids;
}

*编辑 2:已解决 *

该方法不应返回字符串。它应该返回一个 Ids 对象。无需序列化。 设置 ResponseFormat = WebMassageFormat.Json 就可以了。

还是谢谢!

【问题讨论】:

  • 如何创建 JSON 对象?你能提供一些代码吗?

标签: c# json


【解决方案1】:

您是否正在使用 Visual Studio 调试器查看字符串?

      

调试器将字符串显示为 C# 字符串文字。字符串本身实际上并不包含前导和尾随 " 字符和 \ 字符。

Console.WriteLine(s);

输出:

{"ids":["id":1,"id":34,"id":67,"id":100,"id":133,"id":166,"id":199]}

【讨论】:

    【解决方案2】:

    JavaScriptSerializer Class

    JavaScriptSerializer 类由异步通信层在内部用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据。您无法访问该序列化程序的实例。但是,此类公开了一个公共 API。因此,当您想在托管代码中使用 JavaScript Object Notation (JSON) 时,可以使用该类。

    要序列化对象,请使用 Serialize 方法。要反序列化 JSON 字符串,请使用 Deserialize 或 DeserializeObject 方法。要序列化和反序列化 JavaScriptSerializer 本机不支持的类型,请使用 JavaScriptConverter 类实现自定义转换器。然后使用 RegisterConverters 方法注册转换器。

    我在非网络应用程序中使用过它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多