我正在使用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,它将起作用。
非常感谢!
答案 0 :(得分:4)
您是否正在使用Visual Studio Debugger查找字符串?
调试器将字符串显示为C#字符串文字。字符串本身实际上不包含前导和尾随"
字符以及\
字符。
Console.WriteLine(s);
输出:
{"ids":["id":1,"id":34,"id":67,"id":100,"id":133,"id":166,"id":199]}
答案 1 :(得分:1)
异步通信层在内部使用JavaScriptSerializer类来序列化和反序列化在浏览器和Web服务器之间传递的数据。您无法访问该序列化程序的实例。但是,此类公开了一个公共API。因此,如果要在托管代码中使用JavaScript Object Notation(JSON),则可以使用该类。
要序列化对象,请使用Serialize方法。若要反序列化JSON字符串,请使用Deserialize或DeserializeObject方法。要序列化和反序列化JavaScriptSerializer本身不支持的类型,请使用JavaScriptConverter类实现自定义转换器。然后使用RegisterConverters方法注册转换器。
我在非网络应用程序中使用过它。