【求助】.Net Webservice 返回json数据中带转义符 如何解决

antares_k 2009-10-27 05:16:17
*.cs(Webservice)
---------------------------------------------------------------------------------------
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]

[WebMethod]
public string CommentList(int PageSize, int PageIndex, int ProductID)
{
List<veping.Model.Product_Comment> pcModelList = new List<veping.Model.Product_Comment>();
veping.Model.Product_Comment pcModel = new veping.Model.Product_Comment();

SqlParameter[] param = new SqlParameter[]
{
new SqlParameter("@PageSize",PageSize),
new SqlParameter("@PageIndex",PageIndex),
new SqlParameter("@ProductID",ProductID),
new SqlParameter("@bit",0)
};
try
{
DataSet ds = new DataSet();
ds = DAAB.SqlHelper.ExecuteDataset(db.Return_Connection(), CommandType.StoredProcedure, "UP_SearchProductComment", param);
//return ds;

for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
pcModel.Title = ds.Tables[0].Rows[i]["Title"].ToString();
pcModel.Content = ds.Tables[0].Rows[i]["Content"].ToString();
pcModel.UserName = ds.Tables[0].Rows[i]["UserName"].ToString();
pcModel.ThisTime = DateTime.Parse(ds.Tables[0].Rows[i]["ThisTime"].ToString());
pcModelList.Add(pcModel);
}

JavaScriptSerializer serializer = new JavaScriptSerializer();
string result = serializer.Serialize(pcModelList);
return result;
}
catch (Exception ex)
{
throw new Exception(ex.Message, ex);
}
}


*.htm
---------------------------------------------------------------------------------------
<script language="javascript">

function GetList(psize,pindex,pid) {
Ext.Ajax.request({
url: 'http://localhost:10726/veping/vp_webservice.asmx/CommentList', // Webservice的地址以及方法名
contentType:"application/json;utf-8",
jsonData: { PageSize: psize, PageIndex: pindex,ProductID: pid }, // json 形式的参数
method: 'POST', // poste 方式传递
success: onSuccess,
failure: onFailure
});
}

//成功
function onSuccess(request, options) {
// 服务器返回json形式的结果
//var result = Ext.util.JSON.decode( eval('(' +request.responseText+ ')'));
document.write(request.responseText);

}

//失败
function onFailure(request, options) {
document.write("Error:" + request.responseText);
}

</script>

返回结果:
---------------------------------------------------------------------------------------
"[{\"Title\":\"\",\"Content\":\"9折优惠,真正的实惠!\",\"ThisTime\":\"\\/Date(1251153713000)\\/\"},
{\"Title\":\"\",\"Content\":\"9折优惠,真正的实惠!\",\"ThisTime\":\"\\/Date(1251153713000)\\/\"},
{\"Title\":\"\",\"Content\":\"9折优惠,真正的实惠!\",\"ThisTime\":\"\\/Date(1251153713000)\\/\"}]"

return result;
---------------------------------------------------------------------------------------


relace()函数无法替换,C#和javascript都试过了,希望大家能给出解决方案,谢谢了!
...全文
2455 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
haixuan_2004 2012-09-27
  • 打赏
  • 举报
回复
我也遇到同样的问题,求解,
antares_k 2009-10-28
  • 打赏
  • 举报
回复
Webservice得出的结果:
--------------------------------------------------------------
<?xml version="1.0" encoding="utf-8" ?>
<string xmlns="http://tempuri.org/">
[{"Title":"","Content":"9折优惠,真正的实惠!","ThisTime":"\/Date(1251153713000)\/"},{"Title":"","Content":"9折优惠,真正的实惠!","ThisTime":"\/Date(1251153713000)\/"},{"Title":"","Content":"9折优惠,真正的实惠!","ThisTime":"\/Date(1251153713000)\/"}]</string>

非常感谢大家的热情,不过还是请大家看清楚我给出的问题和相关信息
我在帖子中已经提出了,无论是在客户端还是在服务端replace()函数无法解决该问题
客户端是可以去掉"\"符号,但是无法使用正则表达式去掉整个字符串中的"\"符号
并且"\/Date(1251153713000)\/"中存在"\"符号,如果有在客户端(javascript)用正则表达式将 \" 符号全部替换成 " 符号的方法请给出,我目前没有找到

对于1楼的问题:
-------------------------------
@"fdsafa"无法解析双引号

对于3楼的问题:
-------------------------------
我原帖提到的返回结果是用document.write(request.responseText)获取到的结果,但是服务器上的数据也是一样
也就是说用document.write(request.responseText)获取结果的时候转义符并没有计算而是作为字符保留在了字符串中


对于5楼的问题:
-------------------------------
如果不去掉转义符,得到的结果用result[0].Title无法获得数据,也就是所根本无法成功解析json


我要得到的结果就是在客户端得到上面Webservice的json结果
希望大家得到准确结果后在回贴,不要做无谓的猜测
zcl24 2009-10-27
  • 打赏
  • 举报
回复
result.replace("\\","");
jshi123 2009-10-27
  • 打赏
  • 举报
回复
返回是正确的啊,完全符合json格式,一点错也没有,为什么要去掉转义符?
看到被你注释掉的那句倒是。。。

//成功
function onSuccess(request, options) {
// 服务器返回json形式的结果
//var result = Ext.util.JSON.decode( eval('(' +request.responseText+ ')'));
var result = Ext.util.JSON.decode( request.responseText );
document.write(request.responseText);

}
zhouyanfss 2009-10-27
  • 打赏
  • 举报
回复
[{\"Title\":\"\",\"Content\":\"9折优惠,真正的实惠!\",\"ThisTime\":\"\\/Date(1251153713000)\\/\"},
{\"Title\":\"\",\"Content\":\"9折优惠,真正的实惠!\",\"ThisTime\":\"\\/Date(1251153713000)\\/\"},
{\"Title\":\"\",\"Content\":\"9折优惠,真正的实惠!\",\"ThisTime\":\"\\/Date(1251153713000)\\/\"}]
这个应该是你在server端看到的吧,如果是server端应该没问题,JS和C#的转义符都是\,知道这个就好办了,遇到转义符,逻辑想象清楚就可以!!
sundotLei 2009-10-27
  • 打赏
  • 举报
回复
可能是服务端输出就有转义符,
直接访问webservice看看输出结果.如果确实存在转义符,就分析下JavaScriptSerializer,看是否有可控制的方法.

如果解决不了,就在客户端Replace掉吧.
小_虎 2009-10-27
  • 打赏
  • 举报
回复
转的不对吧。

把它装换为:\\\
试试,再不行:\\\\
--
注意,我不是在开玩笑
l171147904 2009-10-27
  • 打赏
  • 举报
回复
@"asdasas"

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧