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

如何将DataFrame生成的资助数据改为无命名对象序列用于JSON序列化?

问题:将Julia生成的带数字键的资助Dict转为JSON数组

我有一个Julia函数getgrants,接收DataFrame作为输入,生成嵌套Dict来表示一系列资助信息,最终要把这个Dict嵌套进更大的层级里生成JSON文件。但目前序列化后的JSON里,资助项带了不必要的数字枚举键,我想改成无命名对象序列(也就是JSON数组),有没有简便的实现方法?

原函数代码

function getgrants(Grantrows)
    if nrow(Grantrows)==0
        return nothing
    end
    Grants = Dict()
    let j = 0
        for GCSGrants in eachrow(Grantrows)
            j += 1
            Grants[j] = Dict(
                "GrantID" => GCSGrants.Grant_ID,
                "GrantDate" => GCSGrants.Grant_Date,
                "GrantAmount" => GCSGrants.Grant_Amount,
                "GrantTitle" => GCSGrants.Grant_Title,
                "GrantDistributor" => GCSGrants.Grant_Distributor,
            )
        end
    end
    return Grants
end

当前序列化后的JSON片段

"Grants": {
   "1": {
       "GrantTitle": "Recipient 1",
       "GrantDate": "2022-03-16",
       "GrantAmount": 600000,
       "GrantDistributor": "Distributor 1",
       "GrantID": "ID789"
   },
   "2": {
       "GrantTitle": "Recipient 2",
       "GrantDate": "2020-09-02",
       "GrantAmount": 250000,
       "GrantDistributor": "Distributor 2",
       "GrantID": "ID456"
   },
   "3": {
       "GrantTitle": "Recipient 3",
       "GrantDate": "2020-06-25",
       "GrantAmount": 448770,
       "GrantDistributor": "Distributor 3",
       "GrantID": "ID123"
   }
}

解决方法

核心就是把原来存资助项的Dict换成Julia的Vector(数组)——因为JSON的数组对应Julia的Vector,序列化后自然就是无键的对象序列。

修改后的函数代码:

function getgrants(Grantrows)
    Grants = Vector{Dict}()
    for GCSGrants in eachrow(Grantrows)
        push!(Grants, Dict(
            "GrantID" => GCSGrants.Grant_ID,
            "GrantDate" => GCSGrants.Grant_Date,
            "GrantAmount" => GCSGrants.Grant_Amount,
            "GrantTitle" => GCSGrants.Grant_Title,
            "GrantDistributor" => GCSGrants.Grant_Distributor,
        ))
    end
    # 如果空数据时要返回空数组而非nothing,直接返回Grants即可;要是想保持返回nothing,加个判断:
    # isempty(Grants) ? nothing : Grants
    return Grants
end

修改后的JSON效果

序列化后会变成标准的JSON数组结构:

"Grants": [
   {
       "GrantTitle": "Recipient 1",
       "GrantDate": "2022-03-16",
       "GrantAmount": 600000,
       "GrantDistributor": "Distributor 1",
       "GrantID": "ID789"
   },
   {
       "GrantTitle": "Recipient 2",
       "GrantDate": "2020-09-02",
       "GrantAmount": 250000,
       "GrantDistributor": "Distributor 2",
       "GrantID": "ID456"
   },
   {
       "GrantTitle": "Recipient 3",
       "GrantDate": "2020-06-25",
       "GrantAmount": 448770,
       "GrantDistributor": "Distributor 3",
       "GrantID": "ID123"
   }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 12:05:10