从解析的JSON对象中获取元素

问题描述:

我似乎无法抽出解析的JSON对象的元素。从解析的JSON对象中获取元素

var thisObj = JSON.parse(req.responseText); 
    console.log(JSON.parse(req.responseText)); 

这里是被记录:

Object 
data: "{"sVar":"sdf","nVar":"","dVar":"","cVar":"#000000"}" 

我曾尝试以下方法

thisObj.data[sVar]

thisObj.data.sVar

他们都产生undefined。它似乎不在数组中。 有什么建议吗?

CONSOLE.LOG(req.responseText)...

{ 
    "args": {}, 
    "data": "{\"sVar\":\"asdf\",\"nVar\":\"\",\"dVar\":\"\",\"cVar\":\"#000000\"}", 
    "files": {}, 
    "form": {}, 
    "headers": { 
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Accept-Language": "en-US,en;q=0.8", 
    "Content-Length": "52", 
    "Content-Type": "application/json", 
    "Host": "httpbin.org", 
    "Origin": "http://localhost:63342", 
    "Referer": "http://localhost:63342/AssignmentAJAX/weather.html", 
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.103 Safari/537.36" 
    }, 
    "json": { 
    "cVar": "#000000", 
    "dVar": "", 
    "nVar": "", 
    "sVar": "asdf" 
    }, 
    "origin": "65.128.122.251", 
    "url": "http://httpbin.org/post" 
} 
+1

您能告诉我们明确的回答吗?它几乎看起来像'.data'是一个字符串 – Bergi

+0

是的。控制台日志请求和req.responseText请发布。 – millerbr

+2

'data'显然是一个字符串。你需要先解析它。更好的是:将服务器端代码修复为节点,对您的数据进行双重编码。 –

thisObjdata属性是表示数据对象的字符串。你也应该解析它。例如:

var response = JSON.parse(req.responseText); 
var data = JSON.parse(response.data); 
console.log(data.sVar); 
+0

是的,当我这样做的时候得到了双重解析,就像Felix Kling提到的那样;然而,这个解析它的方法有两次工作。我后来回去修复了我的请求到服务器的根本问题。谢谢! – McMurroughDan