使用 $.xml2Json 返回一个复杂的对象
Posted
技术标签:
【中文标题】使用 $.xml2Json 返回一个复杂的对象【英文标题】:Using $.xml2Json return a complicated object 【发布时间】:2013-01-21 00:24:36 【问题描述】:我有这个代码:
$.ajax(
type: "GET",
url: trgUrl,
success: function (data)
var xml= $.parseXML(data);
var obj= $.xml2json(xml);
//....
);
而data
可以是这样的:
"<name> Mike </name>"
现在,问题是在使用$.xml2json(xml)
之后,为了显示我需要写的名字:
alert(obj.name.value); // Mike
而不仅仅是:
alert(obj.name); // object object
换句话说:$.xml2json
将<name>
的内容转换为另一个对象(而不是使其成为直接字符串)
我该如何解决这个问题?有人遇到过这个问题吗?
【问题讨论】:
尝试在 ajax 调用中将dataType
设置为'xml'
并跳过$.parseXml
部分。直接传递数据对象。我自己用过xml2json,没有这个问题。
我试过了,但得到了相同的结果。你用过 xml2json() 还是 $.xml2json() ?
很确定是$.xml2json
,但我要等到明天我回去工作时才能检查..
非常感谢您的帮助。
jsfiddle.net/rB4Dy这是我使用的版本,请试用。
【参考方案1】:
修改插件如下:
// Add element value
if(node.childElementCount == 0 && node.textContent != null && node.textContent != "")
/* comment out ".value" */
result[node.nodeName]/*.value */= node.textContent.trim();
演示:http://jsfiddle.net/ycN37/
如果节点有子节点,这可能会产生问题,这可能是作者首先创建对象的原因
【讨论】:
但是你的解决方案能解决这个问题吗(关于你的最后一句话)? 取决于你的 xml 的样子。你试过了吗?为什么在对象中使用value
属性这么难?
我的 xml 比我使用的简单示例要复杂得多,而且我已经编写了函数来处理转换后的对象,只是它的行为不像我希望的那样。无论如何,您发现的内容与我的问题一致(我没有想到,也没有在我的 ajax 代码中做错什么,这是一个开始......)。以上是关于使用 $.xml2Json 返回一个复杂的对象的主要内容,如果未能解决你的问题,请参考以下文章
使用 Javascript 将 XML 转换为 JSON(并返回)
使用 Javascript 将 XML 转换为 JSON(并返回)