javascript - 有办法从示例 JSON 中提取适当的数据吗?
问题描述
从下面的 JSON中获取“Root_Zones”值的最佳方法是什么?
例如,如果我想要“Full_Name”,那么我会这样做:
UserConnectResponse.Result_Data.Full_Name,
但如果我想要Root_Zones
, Successor_Zones
,Water_Source_Groups
那么我如何得到它们呢?因为正如我所做的那样,它给出了 null !
这是功能逻辑:
const saveDbData = async (data) => {
console.log('THE JSON DATA IS:', JSON.stringify(data) + ' ' + 'ROWS');
const UserConnectResponse = data;
await insertUserConnectResponseData(
UserConnectResponse.Req_Type,
UserConnectResponse.Language_Code,
UserConnectResponse.User_ID,
UserConnectResponse.Session_ID,
UserConnectResponse.Session_Key,
UserConnectResponse.Client_Type,
UserConnectResponse.Result_Code,
UserConnectResponse.Result_Message,
UserConnectResponse.Result_Data.Full_Name,
UserConnectResponse.Result_Data.Root_Zones,
UserConnectResponse.Result_Data.Successor_Zones,
UserConnectResponse.Result_Data.Water_Source_Groups
)
.catch((err) => console.log('ERROR AFTER INSERT:', err))
.then((result) => console.log('RESULT AFTER INSERT:', data, result));
const fetchawesome = await fetchUserConnectResponseData();
console.log('tblUserConnectResponseData AFTER INSERT IS: :', fetchawesome);
};
这是 JSON
{
"Req_Type": "string",
"Language_Code": "string",
"User_ID": "string",
"Session_ID": "string",
"Session_Key": "string",
"Client_Type": "string",
"Result_Code": 0,
"Result_Message": "string",
"Result_Data": {
"Full_Name": "string",
"Root_Zones": [
{
"Zone_ID": 0,
"Zone_Name": "string"
}
],
"Successor_Zones": [
{
"Zone_ID": 0,
"Zone_Name": "string"
}
],
"Water_Source_Groups": [
{
"Group_ID": 0,
"Group_Name": "string",
"Zone_ID": 0
}
]
},
"AccessDenied": "string"
}
解决方案
使用destructuring
默认值或使用optional chaining operator
.
const data = {
Req_Type: "string",
Language_Code: "string",
User_ID: "string",
Session_ID: "string",
Session_Key: "string",
Client_Type: "string",
Result_Code: 0,
Result_Message: "string",
Result_Data: {
Full_Name: "string",
Root_Zones: [
{
Zone_ID: 0,
Zone_Name: "string",
},
],
Successor_Zones: [
{
Zone_ID: 0,
Zone_Name: "string",
},
],
Water_Source_Groups: [
{
Group_ID: 0,
Group_Name: "string",
Zone_ID: 0,
},
],
},
AccessDenied: "string",
};
// Using destructuring
const {
Result_Data: {
Root_Zones = [],
Successor_Zones = [],
Water_Source_Groups = [],
} = {},
} = data;
// Using optional chaining operator (?.) and null coalescing operator (??)
const Root_ZonesAlt = data?.Result_Data?.Root_Zones ?? [];
console.log('Method1', Root_Zones);
console.log('Method2', Root_ZonesAlt);
推荐阅读
- php - 使用 PHP 将 PDF 文档 (.pdf) 转换为 EXCEL 文档 (.XLXS)
- r - jupyter notebook R cell执行速度很慢
- java - 在 WAS for Java 8 中生成战争文件和运行战争文件时 .classpath 的重要性
- sql-server - 如何在 SQL Server 中使用 CASE 组合两个子查询
- java - 在 JUnit 5 参数化测试中。CSV 输入。有没有办法通过 Double.NaN,Double.POSITIVE_INFINITY?
- django - 在 Django 模板中设置组
- c# - .NetCore 3.1API 无法加载文件或程序集“Microsoft.AspNetCore.Hosting.Abstractions”
- java - JpaRepository 中的existById 返回 NullPointerException
- python - TypeError: preprocess() 得到了一个意外的关键字参数“shave”
- javascript - 为表中的每个 td 添加唯一的事件侦听器