Javascript 无法正确解析JSON
在Javascript 无法正确解析JSON,javascript,json,Javascript,Json,在application/x-javascript类型的响应中,我在一个变量中选择所需的JSON部分。下面是JSON- { "__ra":1, "payload":null, "data":[ [ "replace", "", true, { "__html": "\u003Cspan class=\"highlight fsm\" id=\"u_c_0\">I w
application/x-javascript
类型的响应中,我在一个变量中选择所需的JSON
部分。下面是JSON
-
{
"__ra":1,
"payload":null,
"data":[
[
"replace",
"",
true,
{
"__html": "\u003Cspan class=\"highlight fsm\" id=\"u_c_0\">I want this text only\u003C\/span>"
}
]
]
}
从Stackoverflow中获得的参考资料中,我可以通过以下方式选择数据中的内容-
var temp = JSON.parse(resp).data;
但是我的目标是只获取\uuhtml
值的文本部分,即我只想要这个文本。有人帮忙。首先,您必须访问目标对象:
var html = JSON.parse(resp).data[0][3]._html;
但是您想要的输出是我只想要这个文本
html变量不包含该文本,而是包含一些html,其中您要查找的内容是span中的文本
如果您接受在项目中包含jQuery,则可以通过这种方式访问该内容
var text = $(html).text();
首先,您必须访问目标对象:
var html = JSON.parse(resp).data[0][3]._html;
但是您想要的输出是我只想要这个文本
html变量不包含该文本,而是包含一些html,其中您要查找的内容是span中的文本
如果您接受在项目中包含jQuery,则可以通过这种方式访问该内容
var text = $(html).text();
首先,您需要更具体地使用该数据,以获得所需的文本字符串:
var temp = JSON.parse(resp).data[0][3]['__html'];
接下来,您需要搜索该字符串以提取所需的数据。这在很大程度上取决于你得到的反应的规律性。在任何情况下,您都可能需要使用正则表达式来解析响应中得到的字符串
在本例中,您试图获取字符串中
元素内的文本。如果你所有的回答都是这样,你可以这样做:
var text = /<span[^>]*>([^<]*)<\/span>/.exec(temp)[1];
var text=/]*>([^首先,您需要更具体地使用该数据,以获得所需的文本字符串:
var temp = JSON.parse(resp).data[0][3]['__html'];
接下来,您需要搜索该字符串以提取所需的数据。这在很大程度上取决于您得到的响应的规律性。在任何情况下,您都可能需要使用正则表达式来解析您在响应中得到的字符串
在本例中,您试图获取字符串中
元素内的文本。如果所有响应都是这样,您可以执行以下操作:
var text = /<span[^>]*>([^<]*)<\/span>/.exec(temp)[1];
var text=/]*>([^将其放在一起:
var html = JSON.parse(resp).data[0][3]._html;
var div = document.createElement("div");
div.innerHTML = html;
var text = div.textContent || div.innerText || "";
Kudos@Tim在跨浏览器innerHTML上对这个答案表示感谢:将所有内容放在一起:
var html = JSON.parse(resp).data[0][3]._html;
var div = document.createElement("div");
div.innerHTML = html;
var text = div.textContent || div.innerText || "";
在跨浏览器的innerHTML上,这个答案值得称赞@Tim:做一个控制台.log(temp)
(假设你在一个提供这个功能的浏览器上),你就会看到你需要做什么。看起来应该是:JSON.parse(resp).data[0][3]。\u html
@MarcB:console.log(temp)=[[“replace”,true,{“\uuuHTML”:“\u003Cspan class=\”highlight fsm\”id=\“u\u c\u 0\”>我只想要这个文本\u003C\/span>“}]]@RaviJoshi:在这里看到接受的答案:不使用jQuery的最佳方式。@RaviJoshi我认为您需要更清楚地回答以下问题:您是否总是知道您的响应将包含
标记,并且它是您想要的文本,或者您是否正在寻找将从该字符串中删除所有HTML标记的内容你。不管怎样,你已经在下面找到了可能的答案。做一个console.log(temp)
(假设你在一个提供该功能的浏览器上),你就会看到你需要做什么。看起来应该是:JSON.parse(resp.data[0][3]。\u html
@MarcB:console.log(temp)=[“replace”,“”,true,{“\uuuHTML”:“\u003Cspan class=\“highlight fsm\”id=\“u\u c\u 0\”>我只想要这个文本\u003C\/span>“}]]@RaviJoshi:在这里看到接受的答案:不使用jQuery的最佳方式。@RaviJoshi我认为您需要更清楚地回答以下问题:您是否总是知道您的响应将包含
标记,并且它是您想要的文本,或者您是否正在寻找将从该字符串中删除所有HTML标记的内容你。不管怎样,你下面已经有了可能的答案。谢谢你…我可以不使用jQuery吗?那样的话,我怎么才能获取文本?请参阅此处接受的答案,了解非jQuery解决方案:@Ravi Joshi:-是的,使用正则表达式或其他字符串解析方法。但是,你将来会在html中获得什么样的内容?如果你使用ct总是在一个go中接收一些文本进行字符串解析。如果你要接收不同的html元素,我建议你去jQuery@Paolo但是为什么仅仅为了检查一个字符串而引入一个完整的框架呢?为什么不使用一个简单的老JavaScript解决方案呢?谢谢……我可以不使用jQuery吗?在这种情况下,我如何获取文本呢?请参阅accepted在这里回答一个非jQuery解决方案:@Ravi Joshi:-是的,使用正则表达式或其他字符串解析方法。但是你将来会在html中得到什么样的内容呢?如果你希望收到一些文本,总是在字符串解析中进行。如果你要收到不同的html元素,我建议使用jQuery@Paolo但是为什么仅仅为了检查一个字符串而引入一个完整的框架呢?为什么不使用一个简单的老JavaScript解决方案呢?很好的非jQuery解决方案……但这取决于提问者是在寻找特定范围内的文本还是没有HTML的文本。这还不清楚。如果清楚,提问者会得到+1对我来说,如果他想要的是一般的HTML标签剥离,我也会得到+1。还有一种模糊的遗憾,我没有首先想到它!:-)这是真的。@Ravi Joshi:你能解释一下你想要的是特定的span标记还是仅仅是innerHTML吗?我喜欢你得到文本的方式,
…很酷…谢谢你…太棒了。很好的非jQuery解决方案…但这取决于