Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法正确解析JSON_Javascript_Json - Fatal编程技术网

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解决方案…但这取决于