无法从JSON数组和对象中获取值


Unable to get the values from JSON Array and Object

在我的Javascript和PHP中,我已经设法执行了一个.ajax调用来获得一个数组。然而,当我想显示每个对象的值时,我无法做到这一点

PHP:

$request =  '{"request_id":' .$requestId. ', "reqName":"' .$requestName. '", "reqSubject":' .json_encode($requestSubjects). '}';
array_push($requestArray, $request);
echo json_encode($requestArray);

所以当我console.log(data)时,它看起来像这样:

["{"request_id":13, "reqName":"Rin", "reqSubject":["English","A Math"]}", "{"request_id":14, "reqName":"Rin", "reqSubject":["English","E Math"]}"]

当我console.log(data[0])时,我可以得到第一个对象:

{"request_id":13, "reqName":"Rin", "reqSubject":["English","A Math"]}

然而,当我想获得对象的值时,比如console.log(data[0].request_id),它会返回一个undefined

如果有人能告诉我我的代码出了什么问题,我将不胜感激。非常感谢。


["{"request_id":13,
请注意[后面的"。这不是javascript控制台中包含对象的数组的输出格式,而是包含字符串的数组。
这是因为

$request =  '{"request_id":' .$requestId. ', "reqName":"' .$requestName. '", "reqSubject":' .json_encode($requestSubjects). '}';

在php脚本中。您在这里构建的不是hashmap/对象,而是一个字符串。它是由json_encode这样编码的。

试试

$request = array(
    "request_id" => $requestId,
    "reqName" => $requestName,
    "reqSubject" => $requestSubjects,
)
array_push($requestArray, $request);
echo json_encode($requestArray);

您可以使用JSON.stringify()将对象转换为字符串。

试试

$request =  {"request_id":"aaaa", "reqName":"bbbb", "reqSubject":"ccc"};
 alert(JSON.stringify($request.request_id));

您得到的响应是json格式的。你必须先解析它。尝试使用-

var response = jQuery.parseJSON(data[0]); //parse json data
console.log(response.request_id);

在你的帖子中,你提到

"但是,当我想像这样获得对象的值时,
console.log(data[0].request_id),它返回一个未定义的。"

要将结果视为对象,应使用JSON.parse()方法将其解析为JSON对象
否则,您可以将其用作阵列

data[0]["request_id"]