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

Python从变量读取JSON数据及解析jboss-cli.sh输出问询

嘿,我来帮你搞定这两个Python相关的问题!

问题1:在Python中从变量读取JSON数据

Python自带的json模块就能轻松搞定这个需求。如果你的JSON数据是字符串变量,直接用json.loads()方法解析成Python字典/列表就行——和从文件读取用的json.load()是一对儿,区别就是前者处理字符串,后者处理文件对象。

举个简单的例子:

import json

# 假设这是你存储JSON数据的字符串变量
json_data_str = '{"username": "john_doe", "is_active": true, "roles": ["admin", "user"]}'

# 把字符串解析成Python字典
parsed_data = json.loads(json_data_str)

# 现在就能像操作普通字典一样访问数据啦
print(parsed_data["username"])  # 输出 john_doe
print(parsed_data["roles"][0])   # 输出 admin

如果你的变量是字节类型(比如从网络请求返回的),先转成字符串再解析就行:json.loads(byte_data.decode("utf-8"))。

问题2:解析jboss-cli.sh的特殊输出格式

jboss-cli.sh默认返回的这个格式看着像JSON,但其实是它自己的“类JSON”格式(用=>代替了标准JSON的:),而且你的例子里输出还被截断了(末尾的s...),所以得先做两步预处理,再解析:

步骤1:把非标准格式转成标准JSON

首先把所有的=>替换成:,然后处理截断的部分,保证JSON结构完整。

步骤2:解析并提取数据

用json.loads()解析处理后的字符串,然后就可以提取你需要的字段了。

完整代码示例:

import json

# 假设这是你从jboss-cli.sh获取到的输出内容
jboss_output = '{ "outcome" => "success", "result" => { "ActiveCount" => "0", "AvailableCount" => "0", "AverageBlockingTime" => "0", "AverageCreationTime" => "0", "CreatedCount" => "0", "DestroyedCount" => "0", "InUseCount" => "0", "MaxCreationTime" => "0", "MaxUsedCount" => "0", "MaxWaitCount" => "0", "MaxWaitTime" => "0", "TimedOut" => "0", "TotalBlockingTime" => "0", "TotalCreationTime" => "0", "s...'

# 第一步:替换非标准的=>为标准JSON的:
standard_json_str = jboss_output.replace('=>', ':')

# 第二步:修复截断的JSON结构(根据实际输出调整,这里假设末尾缺两个闭合大括号)
if standard_json_str.endswith('s...'):
    # 去掉末尾的省略号,补全闭合大括号
    standard_json_str = standard_json_str[:-3] + '}}'

# 尝试解析JSON
try:
    parsed_data = json.loads(standard_json_str)
    # 提取result对象里的字段
    result = parsed_data.get('result', {})
    # 按需获取你需要的字段
    active_count = result.get('ActiveCount')
    available_count = result.get('AvailableCount')
    print(f"ActiveCount: {active_count}, AvailableCount: {available_count}")
except json.JSONDecodeError as e:
    print(f"解析出错啦:{e},大概率是输出截断太严重,建议先确保拿到完整的jboss-cli输出")

更省心的小技巧:让jboss-cli直接输出标准JSON

其实不用这么麻烦,jboss-cli本身支持输出标准JSON格式!你只需要在执行命令的时候加上--output=json参数就行,比如:

./jboss-cli.sh --connect --command="/subsystem=datasources/data-source=YourDataSource:read-resource(include-runtime=true)" --output=json

这样返回的就是标准JSON字符串,直接用json.loads()解析就行,完全不用手动处理格式转换,靠谱多了!

内容的提问来源于stack exchange,提问作者Manii

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:30:01