我想使用 Fable.JsonConverter。

我的测试代码(几乎复制 this )FableJson.fs 在下面,

module FableJson

open Newtonsoft.Json

// Always use the same instance of the converter
// as it will create a cache to improve performance
let private jsonConverter = Fable.JsonConverter() :> JsonConverter

// Serialization
let toJson value =
    JsonConvert.SerializeObject(value, [|jsonConverter|])

// Deserialization
let ofJson<'T> json =
    JsonConvert.DeserializeObject<'T>(json, [|jsonConverter|])

paket.dependencies 文件添加了 nuget Fable.JsonConverter
source https://nuget.org/api/v2
storage:none

clitool dotnet-fable
nuget Fable.Core
nuget Fable.Import.Browser
nuget Fable.JsonConverter

src/paket.references 文件添加了 Fable.JsonConverter
dotnet-fable
Fable.Core
Fable.Import.Browser
Fable.JsonConverter

但无法编译。
~~~ snip ~~~
ERROR in ./src/FableJson.fs
d:/SRC/Repos/Fable/testJsonConverter/src/FableJson.fs(11,4): (11,57) error FABLE: Cannot find replacement for Newtonsoft.Json.JsonConvert::SerializeObject
 @ ./src/App.fs 6:0-48
 @ ./src/testJsonConverter.fsproj
 @ multi (webpack)-dev-server/client?http://localhost:8080 ./src/testJsonConverter.fsproj

ERROR in ./src/FableJson.fs
d:/SRC/Repos/Fable/testJsonConverter/src/FableJson.fs(15,4): (15,62) error FABLE: Cannot find replacement for Newtonsoft.Json.JsonConvert::DeserializeObject
 @ ./src/App.fs 6:0-48
 @ ./src/testJsonConverter.fsproj
 @ multi (webpack)-dev-server/client?http://localhost:8080 ./src/testJsonConverter.fsproj

ERROR in ./src/FableJson.fs
d:/SRC/Repos/Fable/testJsonConverter/src/FableJson.fs(7,28): (7,49) error FABLE: Cannot find replacement for Fable.JsonConverter::.ctor
 @ ./src/App.fs 6:0-48
 @ ./src/testJsonConverter.fsproj
 @ multi (webpack)-dev-server/client?http://localhost:8080 ./src/testJsonConverter.fsproj

我应该怎么办?

最佳答案

@Maslow 是对的,在 Fable 2 中,我们删除了 Fable.JsonConverter 以支持社区创建的库。

  • Thoth.Json 提供类似 Elm 的体验,您可以根据自己的喜好手动或自动解码 JSON。这个库还提供了一个很好的错误信息
  • Fable.SimpleJson 一个用于在寓言项目中解析和转换 JSON 的库

  • Thoth.Json 与 Thoth.Json.Net 相辅相成,允许您在后端使用相同的 API。

    我认为 Fable.SimpleJson 也提供对后端的支持,但我不确定。

    您可以使用 JavaScript 原生 API Fable.Core.JS.JSON.stringifyFable.Core.JS.JSON.parse(x),但您必须使用 unbox/cast 来强制您的数据类型不安全且容易损坏。

    关于f# - 如何编译 Fable.JsonConverter,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48054112/

    10-11 11:14