如何使用C#将序列化返回到JSON

时间:2011-06-08 08:25:36

标签: c# json

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

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

如何摆脱第一个和最后一个qoutation标记?

修改

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,它将起作用。

非常感谢!

2 个答案:

答案 0 :(得分:4)

您是否正在使用Visual Studio Debugger查找字符串?

Screenshot

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

Console.WriteLine(s);

输出:

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

答案 1 :(得分:1)

JavaScriptSerializer Class

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

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

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