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

Octave:jsondecode将单元素数组视为非数组,如何让jsonencode输出数组形式?

Octave中保留单元素JSON数组的方法

Octave的jsondecode会将JSON中的单元素数组解析为非数组类型,比如执行以下两段代码:

j1 = jsondecode ('{"foo": [42]}')
j2 = jsondecode ('{"foo": 42}')

用jsonencode对解析后的结果重新编码时,输出完全一致:

ans = {"foo":42}

如果需要让编码结果保留数组形式,输出如下内容:

ans = {"foo":[42]}

解决方法

核心是确保在编码前,目标字段为数组类型而非单个标量值,可通过以下方式实现:

  • 手动转换字段类型
    解析后主动将目标字段包装为数组:

    j1 = jsondecode ('{"foo": [42]}');
    j1.foo = [j1.foo];  # 将标量转为单元素数组
    jsonencode(j1)
    

    执行后即可得到带数组格式的JSON输出。

  • 批量处理辅助函数
    如果需要处理多个字段或批量数据,可以编写辅助函数,自动将结构体中的标量字段转为单元素数组:

    function obj = ensure_arrays(obj)
        fields = fieldnames(obj);
        for i = 1:length(fields)
            field = fields{i};
            value = obj.(field);
            # 若字段为标量且非结构体、单元格类型,转为单元素数组
            if isscalar(value) && ~isstruct(value) && ~iscell(value)
                obj.(field) = [value];
            end
        end
    endfunction
    
    # 使用示例
    j1 = jsondecode ('{"foo": [42]}');
    j1 = ensure_arrays(j1);
    jsonencode(j1)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 07:52:14