You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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; }

通用实现思路

  1. 将JSON字符串解析为对应语言的可操作对象/字典
  2. 逐层定位到Action_Body节点
  3. 获取该节点的所有键,提取第一个键(主流编程语言的最新版本都保留对象/字典的插入顺序,无需额外处理)
  4. 基于提取的键执行条件判断

具体语言实现示例

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:26:46