用 item[*] 提取JSON内容时当个数只有 1 个的时候会解析内容中的换行符("\n")

使用问题 · 1920 次浏览
dunkelsvL 创建于 2024-05-30 09:18

标题可能无法清楚地表达我遇到的情况,我在这里先举个例子,有这样一个json文本变量:

{
"memos":[
    {
        "content":"aaa\nbbb\nccc"
    }
    ]
}

进行提取 JSON 内容,提取路径为: memos[*].content 提取到列表变量 ListA。

希望的结果是,{ListA}[0] 是"aaa\nbbb\nccc"。但是实际调试的结果会变成:{ListA}[0] 是 "aaa" ,{ListA}[1] 是 "bbb" ,{ListA}[2] 是"ccc" 。

当这个JSON文件的 memos的数量 大于 1 时:

{
"memos":[
    {
        "content":"aaa\nbbb\nccc"
    },
    {
        "content":"ddd\neee\nfff"    
    }
    ]
}

此时 {ListA}[0] 是 "aaa\nbbb\nccc" ,{ListA}[1] 是 "ddd\neee\nfff" 。是希望的结果。

所以请问一下这个现象是属于正常现象吗?

dunkelsvL 最后更新于 2024/5/30

回复内容

正常的, 输出用文本类型的变量, 对于列表来说换行就是下一个值了

dunkelsvL 回复 乐昂岚【接定制】 2024-05-30 09:26 :

明白了,那我就先做个个数判定再分开来处理吧。感谢

乐昂岚【接定制】 回复 dunkelsvL 2024-05-30 09:27 :

你可以通过memos[0].content去提取第一个content,同理更换数字0去提取其它的

CL 2024-05-30 09:30
#2

是的,这里最初设计的有一点问题。会先尝试提取单个值,失败以后再按数组方式提取。 如果数组只有一个值的情况下,单值提取会成功,导致得到一个文本结果。 当文本输出到列表变量的时候,会自动按换行拆分后赋值给列表。所以就出现了上面的现象。

这个我想想怎么优化一下。



CL 2024-06-01 18:26
#3

想起来了,如果希望按数组方式提取,可以在路径上增加 list: 前缀,参考文档


回复主贴