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

使用F#类型提供器解析JSON文件时抛出TypeInitializationException

解决F# JsonProvider的TypeInitializationException异常

你遇到的问题核心是混淆了JsonProvider的Parse和Load方法的用途,导致程序把文件名当成JSON字符串去解析,自然触发了无效JSON的错误。

问题根源

PriceDemand.Parse("PriceDemand.json")这段代码里,Parse方法的作用是直接解析JSON格式的字符串,但你传入的是文件名"PriceDemand.json"——这个字符串本身并不是有效的JSON(有效的JSON应该以[或{开头),所以类型初始化时就抛出了异常。

修正方案

改用Load方法来加载本地JSON文件,它专门用于从文件路径读取并解析JSON数据:

open FSharp.Data
open System

type PriceDemand = JsonProvider<"PriceDemand.json">
// 用Load替换Parse,加载文件内容
let data = PriceDemand.Load("PriceDemand.json")

[<EntryPoint>]
let main argv =
    data |> Seq.iter (fun v -> printf "%s " v.RegionId)
    Console.ReadLine() |> ignore
    0 // return an integer exit code

额外注意事项

  • 确保你的PriceDemand.json文件路径正确:如果是控制台项目,右键文件→属性→设置“复制到输出目录”为始终复制或如果较新则复制,这样程序运行时能在输出目录找到文件。
  • JsonProvider在编译阶段会读取你指定的示例JSON(这里是PriceDemand.json)来生成强类型,运行时Load会加载实际数据并映射到这个类型上,所以示例JSON的格式要和实际数据一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:03:09