【发布时间】:2012-09-01 08:50:04
【问题描述】:
我正在使用:
function pipeCallback(obj) {
获取 Yahoo 管道的内容(以 JSON 格式)。然后我在里面创建一个字符串:
document.write("<div......);
var buildstring = ".......;
document.write(buildstring);
document.write("</div>");
一切正常,除了字符串中的一项:
obj.value.items[x].description.content
包含大量文本,并且已去除其格式。有没有办法定义一个 var(使用 .text()?)来保持格式,然后在字符串中使用定义的术语 - 例如类似:
var description = (obj.value.items[x].description.content).text()
然后在 buildstring 中使用术语“描述”代替 obj.value.items[x].description.content。
感谢您的任何建议/帮助。
编辑
@Barmar 谢谢。我试过了(我认为...):
var description = function() {return (obj.value.items[x].description.content).text()};
var buildstring = "<table><tr><img src=" + imageurl + "> <b>" + obj.value.items[x].title + "</b><br /><td>" + description() + "</td></tr></table><br />";
(imageurl 是一个单独定义的变量)。我想我一定错过了你的建议的重点(或者一开始没有给出正确的信息)。无论如何..它没有工作。
编辑#2
function pipeCallback(obj) {
document.write("<div id=testdiv><b>LATEST NEWS</b><hr>");
var x;
for (x = 0; x < obj.count ; x++)
{
var imageurl = (typeof obj.value.items[x]["media:content"] == 'undefined') ? "http://default.png" : obj.value.items[x]["media:content"].url;
var buildstring = "<table><tr><img src=" + imageurl + "> <b>" + obj.value.items[x].title + "</b><br /><td>" + obj.value.items[x].description.content + "</td></tr></table><br />";
document.write(buildstring);
buildstring = null;
}
document.write("</div>");
}
【问题讨论】:
-
当您使用您拼出的长格式时它是否有效?我的回答只是缩写该表达式的一种方式,它不会改变行为。
-
@Barnar - 当我只有上面的第二行代码与 obj.value.items[x].description.content 代替时,它以原始形式工作(即没有'var描述')描述()。唯一的事情是,当然,我会得到未格式化的文本。谢谢
-
我以为你最后用的是
.text()。那样有用吗?如果是这样,那么我的版本也应该如此——这只是写同一件事的一种更短的方式。不过,我真的不明白你想做什么;我不明白您希望它如何创建不存在的格式。 -
不,这样不行。我要做的就是获取 JSON 对象中的所有
....
标记。目前我只得到一个长文本块——即使当我查看 Yahoo Pipes 中的提要时,也会显示段落。我已将完整代码的相关部分放在上面(有效)。谢谢。 -
我很茫然。如果标签在原始 JSON 字符串中,我不知道为什么在解析时它们会被删除; JSON 不会尝试解释字符串的内容。如果他们被删除,我想不出办法让他们回来。您使用什么 API 来解析 JSON?
标签: json formatting