You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用jQuery/JavaScript解析JSON?Ajax调用WebService解析报错求助

解决jQuery Ajax解析Web服务返回值的问题

嘿,我来帮你搞定这个JSON解析的问题!咱们先拆解一下问题根源,再给你对应的解决方案。

问题出在哪?

你拿到的Web服务返回值其实是两层JSON序列化的结果:外层是一个包含d字段的对象,而d字段的值本身又是一个被JSON序列化过的数组字符串。直接解析整个response只能得到一个带字符串属性的对象,没法直接用里面的数组数据,这就是你后续操作出错的原因。

看你的原代码执行结果:

var response = '{"d":"[{\"username\":\"ABC\",\"designation\":\"\"}]"}';
console.log(JSON.parse(response));

输出会是这样:

{ d: "[{\"username\":\"ABC\",\"designation\":\"\"}]" }

d的值是字符串,不是你预期的数组,自然没法直接按数组去操作。

正确的解析方法

你需要做两次JSON解析:先解析外层的对象,再把d字段里的字符串转成数组。代码示例如下:

var response = '{"d":"[{\"username\":\"ABC\",\"designation\":\"\"}]"}';
// 第一步:解析外层的JSON对象
var parsedOuter = JSON.parse(response);
// 第二步:解析d字段中的字符串,得到目标数组
var userData = JSON.parse(parsedOuter.d);

// 现在就能正常使用数组数据了
console.log(userData); // 输出: [{username: "ABC", designation: ""}]
console.log(userData[0].username); // 输出: ABC

为什么会有这种嵌套结构?

这种情况常见于老版本的ASP.NET Web服务,它们会把实际返回的数据自动包装在d字段中,并且额外做一次序列化,导致最终返回结果是两层JSON结构。记住做两次解析就能轻松解决这个问题啦。

内容的提问来源于stack exchange,提问作者Gans

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:42:09