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

Mule DataWeave 2:多行JSON字符串转对象数组实现问询

解决方法拆解与代码示例

这事儿其实挺 straightforward 的,我给你分步骤拆解,再拿常用的编程语言举例子,一看就懂:

核心步骤

  • 分割响应文本:把API返回的text/plain格式内容按换行符拆成单独的行数组,记得过滤掉空行,避免后续解析出错。
  • 逐行解析JSON:把每行的字符串转换成对应的JSON对象,这里一定要做好异常处理,防止某行格式不规范导致整个流程挂掉。
  • 转换字段并收集:遍历每个解析后的对象,将原有的update字段值映射到新的version字段,最后把这些新对象收集成目标数组。

JavaScript/Node.js 实现示例

不管是浏览器环境还是Node.js,逻辑都是一样的,这里用Node.js的fetch举例:

async function processApiResponse() {
  try {
    // 发起请求获取响应
    const response = await fetch('你的API接口地址');
    const rawText = await response.text();
    
    // 分割成行并过滤空行
    const jsonLines = rawText.split('\n').filter(line => line.trim() !== '');
    
    // 转换并生成目标数组
    const targetArray = jsonLines.map(line => {
      const parsedObj = JSON.parse(line);
      return { version: parsedObj.update };
    });
    
    console.log('目标数组:', targetArray);
  } catch (error) {
    // 捕获请求或解析过程中的错误
    console.error('处理出错啦:', error);
  }
}

// 调用函数
processApiResponse();

Python 实现示例

用Python的requests库来处理,代码逻辑同样清晰:

import requests
import json

def process_api_response():
    try:
        # 发起请求
        response = requests.get('你的API接口地址')
        response.raise_for_status()  # 检查请求是否成功
        
        raw_text = response.text
        # 分割行并过滤空行
        json_lines = [line.strip() for line in raw_text.split('\n') if line.strip()]
        
        target_array = []
        for line in json_lines:
            parsed_obj = json.loads(line)
            target_array.append({'version': parsed_obj['update']})
        
        print('目标数组:', target_array)
    except Exception as e:
        print(f'处理出错啦: {str(e)}')

# 调用函数
process_api_response()

额外提醒

  • 异常处理很重要:API返回的内容可能存在格式错误的行,或者网络请求失败,一定要用try/catch(JS)或try/except(Python)捕获异常,避免程序崩溃。
  • 大数据量优化:如果返回的行数特别多(比如上万行),可以考虑用流式处理的方式逐行读取解析,减少内存占用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:29:01