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

如何解析网页中的多段JSON并提取为CSV格式?

解决多段JSON解析并生成CSV的问题

前端JavaScript方案

你之前的问题在于没有把多段JSON转化为合法的JSON数组格式,直接解析会失败。正确的处理方式是给原始文本包裹外层的[],将其转为合法的JSON数组,再进行解析和处理。

<!DOCTYPE html>
<html>
<body>
<h2>提取JSON并生成CSV</h2>
<div id="demo"></div>
<script>
// 原始多段JSON文本
const txt = '{"id":0,"name":"NAME","area":"Z","site":"https://www.a-site-here.com/en/index.html","logo":"https://www.another-site-here.com/wp-content/uploads/2022/02/image-GetFileAttachment1.png"},{"id":1,"name":"NAME2","area":"Y","site":"https://example.com","logo":"https://example.com/logo.png"}';

// 关键操作:给文本前后添加[],转为合法的JSON数组
const validJson = `[${txt}]`;
const objArray = JSON.parse(validJson);

// 构建CSV内容(处理字段中的特殊字符,避免格式错误)
let csv = 'id,name,area,site,logo\n';
objArray.forEach(item => {
  // 替换字段中的双引号为两个双引号,符合CSV规范
  const formattedFields = [
    item.id,
    `"${item.name.replace(/"/g, '""')}"`,
    `"${item.area.replace(/"/g, '""')}"`,
    `"${item.site.replace(/"/g, '""')}"`,
    `"${item.logo.replace(/"/g, '""')}"`
  ];
  csv += formattedFields.join(',') + '\n';
});

// 展示结果
document.getElementById("demo").innerHTML = `<pre>${csv}</pre>`;
</script>
</body>
</html>

VBA方案

如果需要用VBA实现,需要先导入VBA-JSON库(可直接下载.bas文件导入到VBA工程),再按以下代码处理:

Sub ExtractJSONToCSV()
    Dim rawText As String
    Dim validJson As String
    Dim jsonArray As Object
    Dim jsonItem As Object
    Dim csvContent As String
    
    ' 替换为你实际的多段JSON文本
    rawText = "{""id"":0,""name"":""NAME"",""area"":""Z"",""site"":""https://www.a-site-here.com/en/index.html"",""logo"":""https://www.another-site-here.com/wp-content/uploads/2022/02/image-GetFileAttachment1.png""},{""id"":1,""name"":""NAME2"",""area"":""Y"",""site"":""https://example.com"",""logo"":""https://example.com/logo.png""}"
    
    ' 转为合法JSON数组格式
    validJson = "[" & rawText & "]"
    
    ' 解析JSON
    Set jsonArray = JsonConverter.ParseJson(validJson)
    
    ' 构建CSV表头
    csvContent = "id,name,area,site,logo" & vbCrLf
    
    ' 遍历生成CSV行
    For Each jsonItem In jsonArray
        ' 处理字段中的双引号,符合CSV规范
        Dim formattedName As String, formattedArea As String
        Dim formattedSite As String, formattedLogo As String
        formattedName = Replace(jsonItem("name"), """", """""")
        formattedArea = Replace(jsonItem("area"), """", """""")
        formattedSite = Replace(jsonItem("site"), """", """""")
        formattedLogo = Replace(jsonItem("logo"), """", """""")
        
        csvContent = csvContent & jsonItem("id") & ",""" & formattedName & """,""" & formattedArea & """,""" & formattedSite & """,""" & formattedLogo & """" & vbCrLf
    Next jsonItem
    
    ' 结果写入Sheet1的A1单元格
    Sheet1.Range("A1").Value = csvContent
    ' 如需保存为CSV文件,可取消以下注释
    ' Open "C:\your-path\output.csv" For Output As #1
    ' Print #1, csvContent
    ' Close #1
End Sub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:20:37