-2

我已经发布了我的 html 回复。有人可以帮我解析以下回复吗?

<?xml version="1.0" encoding="utf-8"?>

<string xmlns="http://localhost:53179/hdfcmobile">
    {"Status":"True","Data":[{"Loginstatus":"Success","agentid":1004}]}
</string>
4

4 回答 4

2

这不是 HTML 响应。这是一个 JSON 响应。

您可以使用众多 JSON 解析器库之一对其进行解析。在http://www.json.org上有一个综合列表。


更新

对于您的问题的新版本,您似乎拥有的是一个 XML 文档,该文档在 XML 元素中嵌入了 JSON。

您需要使用 XML 解析器来提取string元素的文本内容,然后使用 JSON 解析器来解析该文本。

为什么会有人认为像这样混合 XML 和 JSON 是个好主意?

于 2012-10-11T05:39:53.617 回答
0

您的响应是 JSON 字符串。为了使用它,您应该将它转换为 JavaScript 对象。eval函数可用于此目的:

var response = '{"Status":"True","Data":[{"Loginstatus":"Success","agentid":1004}]}';
eval('var a='+response);
alert("Status = " + a.Status);
alert("Data.Loginstatus = " + a.Data[0].Loginstatus);
alert("Data.agentid = " + a.Data[0].agentid);

更新

自从我留下答案以来,问题已经更新,所以这是我的答案的补充:)。为了从获得的 XML 响应中提取 JSON 字符串,您可以使用"<string[^>]*>(.*?)<\/string>"如下正则表达式:

var responseText = '<?xml version="1.0" encoding="utf-8"?>

<string xmlns="http://localhost:53179/hdfcmobile">
    {"Status":"True","Data":[{"Loginstatus":"Success","agentid":1004}]}
</string>';

var oRegExp = new RegExp("<string[^>]*>(.*?)<\/string>", "ig");
var matches = oRegExp.exec(responseText);
var response = matches[1];

之后,您可以使用上面编写的代码转换response为 JavaScript 对象。

于 2012-10-11T05:40:53.260 回答
0

这只是json数据。您应该能够将其读入对象:

var JSONtext = '{"Status":"True","Data":[{"Loginstatus":"Success","agentid":1004}]}'
var myObject = JSON.parse( JSONtext );

至于为什么要在 xml 中获取 json 对象作为响应,那是另一回事。通常您的响应应该是 json 或 xml

于 2012-10-11T05:40:57.743 回答
0

这看起来像是在其中一个节点内使用 JSON 的 XML 响应——而不仅仅是 JSON 响应。您可能会从该节点中提取 JSON 字符串,然后使用JSON.parse(extracted_json)

于 2012-10-11T05:42:53.157 回答