如何用jQuery获取嵌套JSON中Action_Body的第一个子键名
如何获取JSON中动态变化的Action_Body第一个子键并进行判断?
问题场景
你有一段结构如下的JSON数据,其中Action_Body的第一个子键是动态变化的(示例中为doMultiPaymentCorpReq),需要获取该键并执行对应的条件逻辑:
{ "corpAPIBankingReq": { "Header": { "TranID": "1" }, "Body": { "CustType": "Corporate", "Action_Type": "MultiPayment", "Action_Body": { "doMultiPaymentCorpReq": { "Header": { "TranID": "${=System.currentTimeMillis() + ((int)(Math.random()*1000))}", "Corp_ID": "ZOHO", "Maker_ID": "M001", "Checker_ID": "C001", "Approver_ID": "A002" }, "Body": { "Payment": [ { "RefNo": "test1", "Amount": "100", "Debit_TrnParticulars": "AISHWARYA", "Debit_PartTrnRmks": "SESHADRI", "Ben_Acct_No": "1000110010002463", "Ben_TrnParticulars": "FTTEST", "Ben_PartTrnRmks": "ABHIJEET", "Mode_of_Pay": "FT", "Nature_of_Pay": "SALC", "Remarks": "DMR" }, { "RefNo": "test10063", "Amount": "5", "Debit_Acct_No": "409000115190", "Debit_Acct_Name": "SACHIN R TENDULKAR", "Debit_IFSC": "RATN0000999", "Debit_Mobile": "9819378393", "Ben_IFSC": "UBIN0556688", "Ben_Acct_No": "8884476527", "Ben_Name": "Sudarshan", "Ben_BankName": "DHANALAXMI-Bank", "Ben_Email": "prabhat.deep1234567wearethebest@naturesports.co.in", "Ben_Mobile": "9696969696", "Mode_of_Pay": "IMPS", "Nature_of_Pay": "MPYMT", "Remarks": "IMPS REQUEST" } ] }, "Signature": { "Signature": "1234" } } } } } }
需要实现的逻辑:
if(first child of Action Body is doMultiPaymentCorpReq){ Do something; } else{ Do something else; }
通用实现思路
- 将JSON字符串解析为对应语言的可操作对象/字典
- 逐层定位到
Action_Body节点 - 获取该节点的所有键,提取第一个键(主流编程语言的最新版本都保留对象/字典的插入顺序,无需额外处理)
- 基于提取的键执行条件判断
具体语言实现示例
JavaScript
// 假设jsonStr是你的JSON字符串 const jsonData = JSON.parse(jsonStr); // 定位到Action_Body节点 const actionBody = jsonData.corpAPIBankingReq.Body.Action_Body; // 获取第一个子键 const firstChildKey = Object.keys(actionBody)[0]; // 执行条件判断 if (firstChildKey === 'doMultiPaymentCorpReq') { // 这里写你需要执行的逻辑 console.log("执行doMultiPaymentCorpReq相关操作"); } else { // 其他情况的逻辑 console.log("执行其他操作"); }
Python
import json # 假设json_str是你的JSON字符串 json_data = json.loads(json_str) # 定位到Action_Body节点 action_body = json_data['corpAPIBankingReq']['Body']['Action_Body'] # 获取第一个子键(Python 3.7+字典默认保持插入顺序) first_child_key = next(iter(action_body.keys())) # 执行条件判断 if first_child_key == 'doMultiPaymentCorpReq': # 这里写对应逻辑 print("执行doMultiPaymentCorpReq相关操作") else: # 其他情况的逻辑 print("执行其他操作")
Java(使用Jackson库)
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import java.util.Iterator; public class JsonKeyProcessor { public static void main(String[] args) throws Exception { // 替换为你的JSON字符串 String jsonStr = "{ \"corpAPIBankingReq\": { ... }}"; ObjectMapper mapper = new ObjectMapper(); JsonNode rootNode = mapper.readTree(jsonStr); // 逐层定位到Action_Body节点 JsonNode actionBodyNode = rootNode.path("corpAPIBankingReq") .path("Body") .path("Action_Body"); // 获取第一个子键 Iterator<String> keyIterator = actionBodyNode.fieldNames(); String firstChildKey = keyIterator.next(); // 执行条件判断 if ("doMultiPaymentCorpReq".equals(firstChildKey)) { // 对应逻辑 System.out.println("执行doMultiPaymentCorpReq相关操作"); } else { // 其他逻辑 System.out.println("执行其他操作"); } } }
注意事项
- 如果使用的是旧版本编程语言(比如Python 3.6及以前、ES5及以前),对象/字典可能不保留插入顺序,这种情况下需要额外处理键的排序逻辑,但目前主流生产环境基本都使用支持有序对象的版本,无需担心。
内容的提问来源于stack exchange,提问作者vamsi
相关产品推荐
相关产品推荐

